PHP 我的时区一周的第一天不正确

标签 php laravel timezone homestead php-carbon

奇怪的问题。

我正在使用 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',

创建一个 Carbon 日期并打印它:

<?php
$date = Carbon::now();
var_dump($date);

输出

object(Carbon\Carbon)[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

奇怪的是,如果我转到我的 homestead 控制台并输入“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

所以我的默认语言环境应该是美国,对吗?根据 Google 的说法,美国、加拿大和日本一周的第一天是星期天……运行“locale first_weekday”会产生:1(星期一)

所以我不确定我应该或可以做些什么来解决这个问题,因为这是完全不正确的。我有一个基于机器语言环境绘制的日历,这显然是错误的,所以它向我的客户展示了一个不适合他们语言环境的日历。

感谢分享您的想法!


编辑#1

这里是 Carbon 问题的链接:https://github.com/briannesbitt/Carbon/issues/680

最佳答案

试试这个:在 AppServiceProvider::boot() 方法中像这样设置一周的开始和结束:

Carbon\Carbon::setWeekStartsAt(Carbon\Carbon::SUNDAY);
Carbon\Carbon::setWeekEndsAt(Carbon\Carbon::SATURDAY);

您必须同时设置一周的开始和结束。将一周的开始时间设置为星期日将使一周只有一天。

关于PHP 我的时区一周的第一天不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37965285/

相关文章:

php - Laravel上的Elasticsearch聚合函数错误

php - 在检索 MySQL 表时克服 PHP 内存耗尽或执行时间错误

php - Laravel 有许多关系无法正常工作

php date() 函数显示错误的时间

Java 服务器和客户端时间

带有命令和参数的 POD 中的 kubernetes 时区

php - Json 在我的列表框中获取 "Undefined"值

php - 同时运行 laravel 4 和 5?

php - 不要回滚使用 PHP、PDO 和 Postgres 的事务中的错误

laravel - smtp 中继 - g 套件 - 带有自定义域电子邮件的 gmail