PHP我的时区一周的第一天不正确
这里奇怪的问题.
我正在使用Laravel,但我很确定它本身与它无关,我的Carbon日期总是在“星期一”作为一周的第一天返回.问题是,我在一个应该返回“星期天”的地方. /* |-------------------------------------------------------------------------- | Application Timezone |-------------------------------------------------------------------------- | | Here you may specify the default timezone for your application,which | will be used by the PHP date and date-time functions. We have gone | ahead and set this to a sensible default for you out of the box. | */ 'timezone' => 'America/Montreal', 创建碳日期并打印出来: <?php $date = Carbon::now(); var_dump($date); 输出 object(CarbonCarbon)[278] public 'date' => string '2016-06-22 06:05:18.000000' (length=26) public 'timezone_type' => int 3 public 'timezone' => string 'America/Montreal' (length=16) 如果我打印一周的第一天 <?php var_dump($date->getWeekStartsAt()); 我明白了 1 奇怪的是,如果我去家园控制台并键入“locale”,我会得到: LANG=en_US.UTF-8 LANGUAGE=en_US: LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=en_US.UTF-8 所以我的默认语言环境应该是USA吗?根据Google的说法,本周美国,加拿大和日本的第一天是星期天…运行“locale first_weekday”收益率:1(星期一) 所以我不确定我应该或可以做些什么来解决这个问题,因为这是完全错误的.我有一个基于机器区域设置绘制的日历,这显然是错误的,因此它向我的客户显示一个不适合他们的区域设置的日历. 谢谢你分享你的想法! 编辑#1 以下是碳问题的链接:https://github.com/briannesbitt/Carbon/issues/680 解决方法
getWeekStartsAt()方法返回一个静态属性
protected static $weekStartsAt = self::MONDAY; 设置为self :: MONDAY,解析为1.这就是你获得1的原因. 您可以调用setWeekStartsAt($day)来设置一周中正确的开始日期.当然,你需要调用setWeekEndsAt($day). $date->setWeekStartsAt(0); $date->setWeekEndsAt(6); // Or better $date->setWeekStartsAt(Carbon::SUNDAY); $date->setWeekEndsAt(Carbon::SATURDAY); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |