全部好,
我正在尝试将今天在亚特兰大的日期和时间与数据库值相匹配。我正在测试以下代码。
$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小时。为什么会出现这种差异?如何纠正这个?
修改
我的服务器位于与亚特兰大不同的时区。我想在不知道时区的情况下处理时差。为此,我们在每个城市都在数据库中添加了时区偏移量。
答案 0 :(得分:2)
使用DateTime
和DateTimeZone
个对象:
//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脚本的计算机)的时间吗?看看它是否有合适的时间