Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 现在是时候错了_Php_Datetime_Laravel_Php Carbon - Fatal编程技术网

Php 现在是时候错了

Php 现在是时候错了,php,datetime,laravel,php-carbon,Php,Datetime,Laravel,Php Carbon,我刚开始使用Carbon扩展(到目前为止似乎还不错),但对Carbon::now()函数感到困惑。根据文档,似乎这个函数应该反映用户当前时区中的当前时间,但是,我似乎得到的时间比格林尼治标准时间早一个小时 i、 e.Carbon::now()在我上PST时说2015-01-01 17:26:46,实际上现在是2015-01-01 08:26:46 我是否必须为所有实例检测并设置用户本地时区 有什么好处?(我很可能对网站如何获取用户本地时间有一个基本的误解)这似乎是因为您的服务器的时区与您自己的时

我刚开始使用Carbon扩展(到目前为止似乎还不错),但对
Carbon::now()
函数感到困惑。根据文档,似乎这个函数应该反映用户当前时区中的当前时间,但是,我似乎得到的时间比格林尼治标准时间早一个小时

i、 e.
Carbon::now()
在我上PST时说
2015-01-01 17:26:46
,实际上现在是
2015-01-01 08:26:46

我是否必须为所有实例检测并设置用户本地时区


有什么好处?(我很可能对网站如何获取用户本地时间有一个基本的误解)

这似乎是因为您的服务器的时区与您自己的时区不同

这可能是由于:

  • 服务器配置错误
  • 服务器的物理位置位于不同的时区
  • 提供商的策略也可能导致这种情况。如果您的提供商决定在全球所有服务器的同一时区上运行,这将导致问题
服务器的时区似乎是CET(中欧时间),如您所述,它是+1 GMT

要解决此问题,您应该(说明来自链接):

  • 打开
    php.ini
    文件
  • 将以下代码行添加到php.ini文件的顶部:
  • date.timezone=“美国/中央”


    或者,如果希望PHP使用另一个时区,则应将
    US/Central
    时区替换为所需的时区。

    Carbon基于UTC,因此只需执行
    Carbon::now()
    即可以UTC格式输出时间

    您必须指定时区,以便准确反映您所在城市或地区的日期时间

    有两种方法可以做到这一点。您可以执行以下任一操作:


    Carbon::now('PST')
    或Carbon::now('洲/市')如
    (Carbon::now('America/Montreal')
    例如

    在config/app.php中更改时区

     'timezone' => 'YOUR TIME ZONE',
    

    对于想知道为什么(有时)Carbon::now()结果不同于new DateTime()的人:

    正在运行以下命令

    public function time()
    {
        $date = Carbon::now();
        echo $date;
        echo "<BR>";
    
        return $date;
    }
    
    显示:

    差异分钟:26


    正如所料。

    now()
    实际上应该反映服务器时区。它不知道最终用户的时区。这很奇怪,因为我的服务器存储为我的本地时间。你编辑了
    config/app.php
    上的
    timezone
    选项了吗?
    time();
    给了你什么?嘿,我刚刚检查了我的phpinfo(),时区是错误的。因此我将在我的php.ini文件中更改它,我相信它会解决问题。非常感谢您的帮助!感谢我根据文档搜索亚洲/都柏林时区的链接,
    Carbon::now()
    默认情况下不是UTC:
    $now=Carbon::now();//将使用设置为日期的时区_default_timezone _set//PS:我们建议您使用UTC作为默认时区,并且只使用//显示的其他时区(如用户时区)
    $anotherDate = Carbon::parse('2020-09-09 18:30:00');
    echo "diff_mins : " . $anotherDate->diff($date)->i;