【问题标题】:Carbon::now() is not using UTCCarbon::now() 没有使用 UTC
【发布时间】:2017-04-08 23:40:10
【问题描述】:

我来自菲律宾。如果我将使用 Carbon::now(),它会捕获我的机器时间而不是 UTC 时间。

我的 config/app.php 是:

    'timezone' => 'UTC',

这是我的代码:

$log->dateRequest = Carbon::now();

如果我会在晚上 9:00(菲律宾时间)发布请求。它捕获 21:00:00 ,而不是 13:00:00 (来自 UTC)。

【问题讨论】:

    标签: php laravel timezone timestamp php-carbon


    【解决方案1】:

    在您提到的一个问题中,您需要在应用中使用多个时区。因此,您可以动态添加时区:

    Carbon::now('UTC')
    

    或者在现有日期使用setTimezone('UTC') 方法。

    【讨论】:

      【解决方案2】:

      Carbon docs instantiation 所述,试试这个:

      $log->dateRequest = Carbon::now('UTC');

      【讨论】:

      • 我在上午 12:21(菲律宾时间)尝试过,但我在 2016-11-25 00:21:23 得到了这个。如果换算成 UTC,应该是 16:21:00。
      【解决方案3】:

      Carbon 使用默认的 DateTime PHP 对象。

      获取默认时区:

      date_default_timezone_get();
      // or
      Carbon::now()->timezoneName;
      

      设置默认时区

      date_default_timezone_set('UTC');
      
      var_dump(Carbon::now()->utc); // true;
      

      【讨论】:

        【解决方案4】:

        你可以试试这个

        $log->dateRequest = Carbon::now('GMT+8'),

        【讨论】:

          【解决方案5】:

          试试这个

          date_default_timezone_set('Asia/Manila');
          $date = Carbon::createFromFormat('F j, Y g:i:a', date('F j, Y g:i:a'));
          
          dd($date->format('F j, Y g:i:a')); //  November 27, 2020 11:53:pm
          

          【讨论】:

            【解决方案6】:

            你也可以试试这个:

            \Carbon\Carbon::now()->timezone('Asia/Manila')
            

            【讨论】:

              猜你喜欢
              • 2017-04-01
              • 1970-01-01
              • 1970-01-01
              • 2015-06-10
              • 2018-07-16
              • 1970-01-01
              • 1970-01-01
              • 2014-03-03
              • 1970-01-01
              相关资源
              最近更新 更多