【问题标题】:Laravel - Carbon Not Factoring in Daylight Savings TimeLaravel - 碳不考虑夏令时
【发布时间】:2018-01-01 00:07:06
【问题描述】:

我在 Laravel 中使用 Carbon 来处理日期。我很快意识到我的本地 PHP 副本是为 UTC 设置的,所以在我的代码中,我在 Carbon 中设置了时区:

$dt = Carbon::now('America/New_York');

奇怪的是,它仍然吐出比纽约时间晚一小时的日期:

echo $dt;

产量:

2017-07-25 16:29:37

但现在是下午 5:29

这似乎是一个小时的休息,因为它没有考虑夏令时。我在 StackOverflow 或 Google 上找不到任何与 Carbon 中的夏令时相关的内容,我读到的所有内容都说,如果您正确设置时区,它将自行考虑 DST。

【问题讨论】:

  • 您检查过php.ini 文件中的datetime 并检查此answer
  • 我检查了我的 php.ini,它设置为相同的内容: date.timezone = "America/New_York" 不幸的是,我在您链接的答案中没有找到任何其他内容可以解释这一点.
  • 尝试使用像echo date("Y-m-d h:i:sa");这样的原生php函数来回显时间,看看你是否根据你的时区得到正确的时间
  • 确认,这确实输出了正确的时间。我还回应了我的 phpinfo() 只是为了确保正在执行的 PHP 与我检查时区设置的 php.ini 相同。时区与我在 php.ini 中设置的匹配
  • 检查laravel/config/app.php line ~ 67 -> 'timezone' => __中的设置

标签: php laravel php-carbon


【解决方案1】:

使用 Carbon 删除您设置时区的位置。

config/app.php里面有一行:

'timezone' => ''

设置为:

'timezone' => 'America/New_York'

它将为您的应用设置默认时区。设置后,您将获得 DST 调整后的纽约时间。

【讨论】:

    猜你喜欢
    • 2017-09-15
    • 2013-09-22
    • 1970-01-01
    • 2011-08-14
    • 2020-09-12
    • 2020-03-01
    • 2018-02-04
    • 2012-07-03
    • 1970-01-01
    相关资源
    最近更新 更多