我正试图使用以下代码获取当前时间:
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"
希望能有所帮助。