关于时区:PHP时区调整

PHP Time Zone Adjustment

我有一段时间在UTC时间发送给我,但我想调整它以便它在东海岸时间(EST / EDT)的日子的外边缘。 也就是说,我希望用户能够输入EDT / EST中心日期,并让它查询UTC正确的日期。

$start_date$end_date是通过GET变量传递的MM / DD / YYYY格式的日期。

1
2
 $start_date = date('Y-m-d 00:00:00', $start_date);
 $end_date = date('Y-m-d 23:59:59', $end_date);

这些日期用于数据库查询,其时间以UTC时间存储。

因此,我希望开始日期是前一天晚上8点或晚上7点,具体取决于夏令时,然后结束于7:59:59或6:59:59,同样取决于夏令时。

我该怎么办?


如果您知道数据来自哪个时区,您可以执行以下操作:

1
2
3
4
5
6
7
$userTimezone = new DateTimeZone('America/New_York');
$systemTimezone = new DateTimeZone('Europe/London');

$ts = new DateTime($datetime, $userTimezone);
$ts->setTimezone($systemTimezone);

return $ts->format('Y-m-d H:i:s');

其中$ datetime是根据规则的有效日期格式 - http://www.php.net/manual/en/datetime.construct.php

这是我们在web2project中做的核心 - http://web2project.net/ - 在用户选择的时区中获取日期时间,但将其存储在GMT / UTC中。


在MySQL中,您可以执行以下操作:

1
SELECT * FROM tablename WHERE date = DATE_SUB('2010-06-17 00:00:00',INTERVAL 4 HOUR);