2011-03-29 67 views
0

我写了一个脚本,它将我的时区转换为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'); 

此功能工作正常的“亚洲/加尔各答”但是当我尝试与美国/纽约时区。我得到错误的结果....... 请检查代码,并帮助我解决错误。

+0

你为什么要污蔑你的问题? – Will 2011-03-29 16:53:12

回答

2

结果是“当前日期/时间= 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

0

我想这个问题(和代码)可以用this one有关。所以你的解决方案在那里。顺便说一句,你发现从不同的时区将时间转换为UTC有什么不对吗?因此,您不需要使用函数的最后一个参数(boolean true/false),因为UTC不会遵守夏令时,所以基本上您会得到与函数结果相同的时间,在函数中包含或不包含DST。