在php中添加夏时制时间偏移后,日期和时间相差一小时

在php中添加夏时制时间偏移后,日期和时间相差一小时,php,datetime,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]);

大家好

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

    $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
当我运行代码时,我发现如果我检查时间,则有1小时的时差

我加上了4小时的日光节约补偿,但我得到的时间仍然比实际时间多1小时。为什么会出现这种差异?如何纠正这一点

编辑


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

您是否检查了服务器(执行实际PHP脚本的计算机)的时间?查看它是否有正确的时间

使用和对象:

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

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

这两个版本对我来说输出的时间相同。

尝试使用,而不仅仅是
mktime
@Grooveek-我已经编辑了这篇文章@Carlos Camderrós-gmmktime对此无能为力:(“与亚特兰大不同的时区”没有指定您的时区;-)您说您在数据库中放置了时区偏移量,但时区偏移量在一年中的移动取决于DST(您的和亚特兰大的)。亚特兰大是UTC-5或UTC-4。请指定有关UTC的时区,如果您有DSTI,则不希望指定任何将随地点变化的参数。可能吗?
$x = new DateTime(null, new DateTimeZone('America/New_York')); 
echo $x->format("Y-m-d H:i")