PHP / MySQL时间戳和时区

时间:2011-01-01 09:24:41

标签: php mysql timezone timestamp

如果我使用MySQL中的NOW()函数获取当前时间戳,我可以通过php获取该字段并在不同时区提供该时间吗?基本上将当前时区的当前时间转换为另一个时区?

2 个答案:

答案 0 :(得分:5)

您可以使用DateTimeZone类:

$gmt = new DateTimeZone("GMT");
$datetimeInGMT = new DateTime($now, $gmt);

它还采用continent/city形式的位置,例如Europe/London

如果您的日期时间是非UTC,则可以使用setTimezone

$datetimeInGMT = new DateTime($now, new DateTimeZone("America/New_York"));
$datetimeInGMT->setTimezone(new DateTimeZone("GMT"));

答案 1 :(得分:3)

MySQL的时区处理比PHP更复杂。它处理简单的时区(EST,PST等)和我称之为“区域时区”(美国/东部)。使用区域区域使用正确的转换,包括夏令时,即使DST规则多年来发生了变化。

我所做的是使用MySQL函数UTC_TIMESTAMP()将我的所有日​​期时间存储为UTC。然后,在查询中,我使用MySQL函数CONVERT_TZ()到我的目标时区。 http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

注意:您可能需要更新时区表。 http://dev.mysql.com/downloads/timezones.html