【发布时间】:2020-10-29 02:21:29
【问题描述】:
我已将config/app.php 中的时区配置为Europe/Lisbon。
如果我执行return date_default_timezone_get();,它会像我想要的那样返回Europe/Lisbon。
到目前为止一切顺利!
当我执行Carbon::now() 时,它会返回例如 16 小时,而当前时间是 17 小时。有人可以解释为什么不考虑夏令时吗?
我正在使用 Laravel 7.16、PHP 7.4
问候
编辑 1:代码图像 + 时间 | https://imgur.com/pfh6uij
编辑 2:当我更改配置中的某些内容时,始终完成 php artisan optimize:clear 以清除所有缓存。
编辑 3:模型上的 created_at 和 updated_at 时间正确。
编辑 4:return Carbon::now() 返回糟糕的时间。执行 dd(Carbon::now()) 返回正确的值,并在 config/app.php 中配置时区 | dd() 示例 -> date: 2020-07-08 17:25:28.935949 Europe/Lisbon (+01:00)
编辑 5:在 github 上打开了一个问题 - https://github.com/laravel/framework/issues/33475
编辑 6:在我的例子中,我使用了 php date() 函数来解决这个问题。不是我想要的方式,而是完成工作......
if (date(now()) > $subscriber->token_expire_date)
{
// return not found response
return $this->response(false, 410, 'The token has expired.', []);
}
【问题讨论】:
-
Carbon 是基于 UTC 的,因此只需执行
Carbon::now()将以 UTC 格式输出时间。您必须指定时区才能准确反映您所在城市或地区的日期时间。Carbon::now('PST')或Carbon::now('Continent/City')就像(Carbon::now('America/Montreal')一样 -
你在
return Carbon::now()和dd(Carbon::now())上得到同样的结果??? -
@Kurt 似乎是新版本的一个小故障,这里有另一个同样的问题stackoverflow.com/questions/62758417/…
-
这是一个非常奇怪的问题。希望有人可以照亮它。这里值得大赞。
-
您可以使用 date() 函数来帮助您获得正确的时间 date_default_timezone_set('Europe/Lisbon');回显日期(“YmdHis”); php.net/manual/en/function.date.php.