Php 现在是时候错了
我刚开始使用Carbon扩展(到目前为止似乎还不错),但对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::now()
函数感到困惑。根据文档,似乎这个函数应该反映用户当前时区中的当前时间,但是,我似乎得到的时间比格林尼治标准时间早一个小时
i、 e.Carbon::now()
在我上PST时说2015-01-01 17:26:46
,实际上现在是2015-01-01 08:26:46
我是否必须为所有实例检测并设置用户本地时区
有什么好处?(我很可能对网站如何获取用户本地时间有一个基本的误解)这似乎是因为您的服务器的时区与您自己的时区不同 这可能是由于:
- 服务器配置错误
- 服务器的物理位置位于不同的时区
- 提供商的策略也可能导致这种情况。如果您的提供商决定在全球所有服务器的同一时区上运行,这将导致问题
php.ini
文件或者,如果希望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;