【发布时间】:2019-01-25 18:46:10
【问题描述】:
我正在使用 Carbon 解析的字符串并指定 UTC 时区。然后,我将时区切换到 America/Denver 并输出格式化的字符串,时间值不会改变。我究竟做错了什么?我已经搜索过所有内容,我所阅读的所有内容都表明这应该可行。
$date = Carbon::parse('2018-08-19 10:43:15', 'UTC');
Log::info($date->timezone->getName());
Log::info($date->format('n/j/y g:i A'));
$date->setTimezone('America/Denver');
Log::info($date->timezone->getName());
Log::info($date->format('n/j/y g:i A'));
我的日志返回:
[2018-08-19 11:23:17] local.INFO: UTC
[2018-08-19 11:23:17] local.INFO: 8/19/18 10:43 AM
[2018-08-19 11:23:17] local.INFO: America/Denver
[2018-08-19 11:23:17] local.INFO: 8/19/18 10:43 AM
【问题讨论】:
-
你的代码改变了我的时间,我在欧洲/伦敦。这是返回真还是假:
var_dump(date_default_timezone_set('UTC')); -
它返回为真。我将服务器的默认时区和 PHP 设置为 UTC,这样当我将值插入我的 mysql 数据库时,它们将被存储为 UTC。我要做的是获取从我的数据库返回的 UTC 值,然后将其转换为本地时区。
-
您上面的代码显示我的 6 小时差异,我所做的唯一更改是转储值而不是记录。除了你 var_dump 它们只是为了消除它,我想我想不出别的了。
-
我也试过
$date->setTimezone('America/Denver')->format('n/j/y g:i A');,它也返回相同的值。
标签: php timezone php-carbon