我尝试使用以下代码获取当前时间:
date_default_timezone_set('America/Chicago');
$curDate = new DateTime();
echo $curDate;
它回响的时间比芝加哥的时区早2个小时。为什么会这样?我的服务器也设置为芝加哥的时区。
答案 0 :(得分:2)
试试这个(添加日期格式)....
date_default_timezone_set('America/Chicago');
$curDate = new DateTime();
echo date_format($curDate,'Y-m-d H:i:s');
答案 1 :(得分:1)
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');
这将允许用户在您的代码提供的用户配置文件中设置他们的时区。另一种选择是使用浏览器报告的时区,但这些时区不可靠。
答案 2 :(得分:0)
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"
希望有所帮助。