PHP DateTime比当前时间提前2小时



我正试图使用以下代码获取当前时间:

date_default_timezone_set('America/Chicago');
$curDate = new DateTime();
echo $curDate;

它的回声时间比芝加哥的时区提前了2个小时。为什么会这样?我的服务器也设置为芝加哥的时区。

试试这个(添加日期格式)。。。。

date_default_timezone_set('America/Chicago');
$curDate = new DateTime();
echo date_format($curDate,'Y-m-d H:i:s');

PHP 5.2+

$datetime = new DateTime("now",new DateTimeZone('UTC'));
$datetime->modify('+2 hour');

^^误解,以为你需要调整2个小时,因为这很酷而离开。

最佳做法是将日期存储为UTC,要么隐式地存储为Unix Epoch整数(Epoch始终为UTC),要么存储为字符串中包含时区的ISO8601。你的服务器时区不应该干扰你的代码显示正确时间的能力。

然后当你去使用存储的日期。

$users_timezone = 'America/Chicago';
$datetime = DateTime::createFromFormat('U',$epoch_from_server);
$timezone = new DateTimeZone($users_timezone);
$datetime->setTimezone($timezone);
$datetime = $datetime->format('Y-m-d H:i:s');

这将允许用户在您的代码提供的用户配置文件中设置时区。另一种选择是使用浏览器报告的时区,但这些时区不可靠。

1)正确设置服务器的时区

cd /etc
rm -f localtime
ln -sf /usr/share/zoneinfo/America/Chicago localtime

2) 与ntp服务器同步时间:

yum install ntp ntpdate ntp-doc
chkconfig ntpd on
ntpdate pool.ntp.org
/etc/init.d/ntpd start

3) 在php.ini 中设置时区

timezone = "America/Chicago"

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新