在php中添加夏令时偏移后的日期和时间的一小时差异

时间:2011-05-13 07:30:22

标签: php datetime

全部好,

我正在尝试将今天在亚特兰大的日期和时间与数据库值相匹配。我正在测试以下代码。

    $date = new DateTime();
    $newToday = $date->format('Y-m-d H:i:s');
    $dateTimeArr = split(" ",$newToday);
    $dateArr = split("-", $dateTimeArr[0]);
    $timeArr = split(":",$dateTimeArr[1]);

    $testTime = date("Y-m-d H:i",mktime($timeArr[0]+4, $timeArr[1], $timeArr[2], $dateArr[1], $dateArr[2], $dateArr[0])); // 4 is Daylight Saving Time offset

当我运行代码时,如果我在http://www.timetemperature.com/tzga/atlanta.shtml检查时间,我发现有1小时的时差

我正在添加4小时的日光节省偏移,但我得到的时间仍比实际时间多1小时。为什么会出现这种差异?如何纠正这个?

修改

我的服务器位于与亚特兰大不同的时区。我想在不知道时区的情况下处理时差。为此,我们在每个城市都在数据库中添加了时区偏移量。

2 个答案:

答案 0 :(得分:2)

使用DateTimeDateTimeZone个对象:

//EDT = Eastern Daylight Saving Time
$x = new DateTime(null, new DateTimeZone('EDT')); 
echo $x->format("Y-m-d H:i")

我认为如果你使用America/New_York(与亚特兰大在同一时区)作为时区,它将在正常和夏令时之间相应地改变。

$x = new DateTime(null, new DateTimeZone('America/New_York')); 
echo $x->format("Y-m-d H:i")

两个版本都为我输出相同的时间。

答案 1 :(得分:0)

您检查过服务器(执行实际PHP脚本的计算机)的时间吗?看看它是否有合适的时间