具有时间偏移的Carbon :: now()导致不同的行为

时间:2016-04-06 09:45:36

标签: laravel-5.1 php-carbon

我正在使用Carbon来操纵laravel项目中的日期。

Carbon::now('+5:30');

上面的代码在本地环境中运行良好,但在开发环境中却没有。

这是我dd(Carbon::now('+5:30'));

的结果

1 - 在本地环境中 php版本 - 5.6.3

enter image description here

2 - 在开发环境中 php版本 - 5.5.9-1ubuntu4.14

enter image description here

如果我使用时区名称而不是时间偏移,两个环境的行为都相同,

 Carbon::now('Asia/Tokyo');

这是关于 php-version 还是别的东西?

2 个答案:

答案 0 :(得分:2)

在搜索相关问题后,我找到了答案。

似乎PHP版本5.5.9有一个错误:

https://stackoverflow.com/a/14069062/5912664

所以你不能将这种方法用于Carbon,但以下内容应该有效:

Carbon::now()->addHours(5)->addMinutes(30);

您可以将服务器时区放在那里以提高准确性:

Carbon::now(date_default_timezone_get())->addHours(5)->addMinutes(30);

答案 1 :(得分:1)

你可以改变

'timezone' => 'UTC'

此时区必须与您所在的国家/地区相匹配。因此请将此UTC替换为您当前的区域。