转换时间到UTC时错误的结果
问题描述:
我写了一个脚本,它将我的时区转换为gmt,反之亦然完美.......但是当我试图检查DST后,timzones相同的函数我得到错误的结果。 这里是我的功能去............转换时间到UTC时错误的结果
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');
此功能工作正常的“亚洲/加尔各答”但是当我尝试与美国/纽约时区。我得到错误的结果....... 请检查代码,并帮助我解决错误。
答
结果是“当前日期/时间= 2011-03-29 13:23:00”与“America/New_York时区”,它似乎是正确的。
你可能会觉得奇怪的是,纽约是GMT-5,它应该是“2011-03-29 14:23:00”。
但是,夏令时(夏令时)从2011/3/13开始,将于2011年11月6日结束。 因此,在DST期间,它将与GMT-4相同。
入住纽约时间与DST: http://www.timeanddate.com/worldclock/city.html?n=179
答
我想这个问题(和代码)可以用this one有关。所以你的解决方案在那里。顺便说一句,你发现从不同的时区将时间转换为UTC有什么不对吗?因此,您不需要使用函数的最后一个参数(boolean true/false),因为UTC不会遵守夏令时,所以基本上您会得到与函数结果相同的时间,在函数中包含或不包含DST。
你为什么要污蔑你的问题? – Will 2011-03-29 16:53:12