3
我收到时间:我必须明确地用DateTimeZone重写PHP的DateTime吗?
0001-01-01T00:00:00.000Z
Greenwich Mean Time
我在一个DateTime保存为:
$event->startTime = new DateTime($item->startTime, new DateTimeZone('GMT'));
这给了我:
protected 'startTime' =>
object(DateTime)[137]
public 'date' => string '0001-01-01 00:00:00' (length=19)
public 'timezone_type' => int 2
public 'timezone' => string 'Z' (length=1)
这意味着它忽略了时区。从文档:
注:
在$时区参数和 当前时区都将被忽略,当 $时间参数要么是UNIX 时间戳(如@ 946684800)或 指定一个时区(例如 2010-01-28T15:00:00 + 02:00)。
如果我事后重写它:
$event->startTime->setTimezone(new DateTimeZone('GMT'));
我得到:
protected 'startTime' =>
object(DateTime)[137]
public 'date' => string '0001-01-01 00:00:00' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'UTC' (length=3)
因此,响应说,时区必须是GMT/UCT是+ 0,但PHP决定TL;博士和我结束了我的默认php.ini时区+2。这不是错的吗?
无论如何,我将使用开始时间作为倒计时,所以时区是至关重要的。我的问题是:我是否将时区覆盖到UCT是正确的?当我打算使用DateTime :: diff时,是否会给我正确的时间?
由于PHP是一种服务器端语言,因此获取Datetime对象总是最终成为服务器端的时间,不是吗? – 2011-06-08 10:10:48
是的,但是我必须坚持DateTime与事件的时区或服务器的时区? – Tjorriemorrie 2011-06-08 10:26:08