我有一段时间在UTC时间发送给我,但我想调整它以便它在东海岸时间(EST / EDT)的日子的外边缘。也就是说,我希望用户能够输入EDT / EST中心日期,并让它查询UTC正确的日期。
$start_date
和$end_date
是通过GET变量传递的MM / DD / YYYY格式的日期。
$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,同样取决于夏令时。
我该怎么做?
答案 0 :(得分:2)
如果您知道数据来自哪个时区,您可以执行以下操作:
$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中。
答案 1 :(得分:0)
在MySQL中,您可以执行以下操作:
SELECT * FROM tablename WHERE date = DATE_SUB('2010-06-17 00:00:00',INTERVAL 4 HOUR);