Laravel Carbon获得当周的开始+结束

Ste*_*own 11 php laravel laravel-4 php-carbon

我正在与Laravel 4合作,在Facebook上发布/安排餐厅菜单.为此,我需要一个当前周的日期选择器,始终在星期一开始,并始终在星期日结束.

餐厅菜单的线框

我已经玩过http://carbon.nesbot.com/docs/#api-getters的例子但没有成功.

任何的想法?

Its*_*wal 12

使用Carbon Library非常简单.这是代码示例:

$now = Carbon::now();
$weekStartDate = $now->startOfWeek()->format('Y-m-d H:i');
$weekEndDate = $now->endOfWeek()->format('Y-m-d H:i');
Run Code Online (Sandbox Code Playgroud)

即使您可以选择更改一周的开始和结束日期.就像这样,

$start = $now->startOfWeek(Carbon::TUESDAY);
$end = $now->endOfWeek(Carbon::MONDAY);
Run Code Online (Sandbox Code Playgroud)

资料来源:https://carbon.nesbot.com/docs/#api-getters

  • 这会将两个变量设置为本周结束,因为 `->startOfWeek` 将更改变量,而不是克隆它 (2认同)

Mar*_*vic 8

最好的方法是使用jquery插件

http://api.jqueryui.com/datepicker/

在你的view.blade.php中输入输入字段

<input type="text" id="in">
Run Code Online (Sandbox Code Playgroud)

在脚本文件中选择此输入并设置日期范围

<script>
        $("#in").datepicker({
            minDate: new Date("{{Carbon\Carbon::now()->startOfWeek()->format('Y/m/d')}}"),
            maxDate: new Date("{{Carbon\Carbon::now()->endOfWeek()->format('Y/m/d')}}")
        });
</script>
Run Code Online (Sandbox Code Playgroud)

这应该是这样的

http://imgur.com/K0ZhiVy


Tre*_*yer 6

请注意,如果您希望开始日期保持为一周的开始,则需要使用 CarbonImmutable。(而且它不是“Laravel Carbon”,它只是 Carbon)

$now = CarbonImmutable::now();
$weekStartDate = $now->startOfWeek();
$weekEndDate = $now->endOfWeek();
Run Code Online (Sandbox Code Playgroud)


Dem*_*ian 5

这为您提供了一周的开始(星期一)到一周的结束(星期日)。

不知道这是否是服务器上的设置。(有些人把最初的一周放在周日)

private $start;
private $end;

public function setWeekPeriod($weeknumber)
{
    $week_start = (new DateTime())->setISODate(date("Y"),$weeknumber)->format("Y-m-d H:i:s");

    $this->start = Carbon::createFromFormat("Y-m-d H:i:s", $week_start);
    $this->start->hour(0)->minute(0)->second(0);
    $this->end = $this->start->copy()->endOfWeek();
}
Run Code Online (Sandbox Code Playgroud)