【问题标题】:Carbon::now() with time-offset result in different behaviors具有时间偏移的 Carbon::now() 导致不同的行为
【发布时间】:2016-04-06 09:45:35
【问题描述】:

我正在使用 Carbon 在 laravel 项目中操作日期。

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

以上代码在本地环境中运行良好,但在开发环境中却不行。

这就是我在dd(Carbon::now('+5:30'));得到的结果

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

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

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

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

这是关于 php-version 还是别的什么?

【问题讨论】:

    标签: laravel-5.1 php-carbon


    【解决方案1】:

    在搜索相关问题后,我有一个答案。

    PHP 5.5.9 版好像有bug:

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

    因此,您不能对 Carbon 使用该方法,但以下方法应该有效:

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

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

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

    【讨论】:

      【解决方案2】:

      你可以改变

      'timezone' => 'UTC'
      

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

      【讨论】:

      • 正确,但我要问的是为什么它在某些情况下不起作用&我需要像 Carbon::now('+5:30') 那样做,因为我需要格式化来自不同国家的一些时间。
      • 更改环境文件可能会在其他地方产生意想不到的后果。
      猜你喜欢
      • 2021-05-10
      • 2016-07-19
      • 2014-07-10
      • 1970-01-01
      • 2017-04-01
      • 2017-04-08
      • 2011-12-13
      • 2021-09-19
      • 1970-01-01
      相关资源
      最近更新 更多