我有一个数据库表,我存储了一个日期NOW()
,时间比我晚了两个小时。我的时区是UTC + 2,我的phpMyAdmin数据库正在使用' Africa / Accra'或者' Artic / Reykjavik' - GMT。
如果我的数据库使用默认值,这很好,但是当我尝试将时间转换为用户时区时,没有任何反应。
这就是我的尝试:
date_default_timezone_set("Africa/Accra"); // Also tried with GMT
$timezone = 'Europe/Berlin';
$feed_time = '2014-05-20 19:27:52';
$schedule_date = new DateTime($feed_time, new DateTimeZone($timezone) );
$newdate = date('Y-m-d H:i:s',strtotime("$feed_time UTC"));
echo $newdate;
这个回声:2014-05-20 19:27:52
,所以没有区别。
如何转换时间,使其与设备默认时区相同?
答案 0 :(得分:3)
您未使用$schedule_date
。您使用新值创建它但从未实际使用它。您仍然使用旧数据。
$schedule_date = new DateTime($feed_time, new DateTimeZone($timezone) );
echo $schedule_date->format('Y-m-d H:i:s');
此外,您需要先设置日期/时间,然后再更改时区。这是因为您的日期/时间是UTC,因此您需要从那里开始。然后你可以相应地改变时区。
$original_date = new DateTime('2014-05-20 19:27:52', new DateTimeZone('UTC') );
$original_date->setTimeZone(new DateTimeZone('Africa/Accra'));
echo $original_date->format('Y-m-d H:i:s');
$schedule_date = new DateTime('2014-05-20 19:27:52', new DateTimeZone('UTC') );
$schedule_date->setTimeZone(new DateTimeZone('Europe/Berlin'));
echo $schedule_date->format('Y-m-d H:i:s');
输出:
2014-05-20 19:27:52
2014-05-20 21:27:52