【发布时间】:2016-08-11 16:40:18
【问题描述】:
我正在使用 Laravel 4 开发一个在 facebook 上发布/安排餐厅菜单的工具。 为此,我需要一个当前周的日期选择器,总是从星期一开始,总是在星期日结束。
我已经尝试过http://carbon.nesbot.com/docs/#api-getters 的示例,但没有成功。
有什么想法吗?
【问题讨论】:
标签: php laravel laravel-4 php-carbon
我正在使用 Laravel 4 开发一个在 facebook 上发布/安排餐厅菜单的工具。 为此,我需要一个当前周的日期选择器,总是从星期一开始,总是在星期日结束。
我已经尝试过http://carbon.nesbot.com/docs/#api-getters 的示例,但没有成功。
有什么想法吗?
【问题讨论】:
标签: php laravel laravel-4 php-carbon
Carbon 库非常简单。下面是代码示例:
$now = Carbon::now();
$weekStartDate = $now->startOfWeek()->format('Y-m-d H:i');
$weekEndDate = $now->endOfWeek()->format('Y-m-d H:i');
即使您也可以选择更改一周的开始日期和结束日期。是这样的,
$start = $now->startOfWeek(Carbon::TUESDAY);
$end = $now->endOfWeek(Carbon::MONDAY);
【讨论】:
->startOfWeek 将更改变量,而不是克隆它
最好的办法是使用jquery插件
在您的 view.blade.php 中创建输入字段
<input type="text" id="in">
在您的脚本文件中选择此输入并设置日期范围
<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>
应该是这样的
【讨论】:
这将为您提供一周的开始(星期一)到一周的结束(星期日)。
不知道这是否是服务器上的设置。 (有些人把第一周放在星期天)
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();
}
【讨论】:
请注意,如果您希望开始日期保持在一周的开始,则需要使用 CarbonImmutable。 (也不是“Laravel Carbon”,它只是 Carbon)
$now = CarbonImmutable::now();
$weekStartDate = $now->startOfWeek();
$weekEndDate = $now->endOfWeek();
【讨论】:
endOfWeek() 来更改我的开始日期感到非常困惑。现在我明白了。