我写了一个脚本,将我的时区转换为gmt,反之亦然.......但是当我尝试检查DST跟随timzones的相同功能后,我得到了错误的结果。 这是我的功能............
function ConvertOneTimezoneToAnotherTimezone($time,$currentTimezone,$timezoneRequired)
{
$current_zone = new DateTimeZone($currentTimezone);
// print_r($current_zone);
//$gmt = new DateTimeZone('GMT');
$date = new DateTime($time, $current_zone);
//var_dump($date);
//$date->setTimezone($gmt);
$date->setTimezone(new DateTimeZone($timezoneRequired));
return $date->format('Y-m-d H:i:s');
// Convert it back to Original timezone
//$date->setTimezone($current_zone);
//return $date->format('Y-m-d H:i:s');
}
$time='2011-03-29 9:53:00';
echo "Current Date/Time is = ".
ConvertOneTimezoneToAnotherTimezone($time,'Asia/Kolkata','UTC');
此功能适用于“亚洲/加尔各答”,但是当我尝试使用America / New_York时区时。我得错了结果....... 请检查代码并帮我修复错误。
答案 0 :(得分:2)
结果是“当前日期/时间是= 2011-03-29 13:23:00”,带有“America / New_York timezone”,似乎它是正确的。
你可能会觉得奇怪的是,纽约是GMT-5,应该是“2011-03-29 14:23:00”。
但是,夏令时(夏令时)于2011年3月13日开始,将于2011/11/6结束。 因此,在夏令时期间,它将与GMT-4相同。
使用夏令时检查纽约时间: http://www.timeanddate.com/worldclock/city.html?n=179
答案 1 :(得分:0)
我猜这个问题(和代码)可能与 this one 有关。所以你的解决方案在那里。顺便说一下,你有没有发现从不同的时区转换到UTC的时间有什么问题?你不需要使用函数的最后一个参数(布尔值true / false),因为UTC不会观察夏令时,所以基本上你会得到与函数结果相同的时间,函数中包含或不包含DST。