2011-03-29 4 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

답변

2

결과는 "America/New_York timezone"과 함께 "Current Date/Time is = 2011-03-29 13:23:00"이며 올바른 것으로 보입니다.

뉴욕이 GMT-5이고 그것이 "2011-03-29 14:23:00"이어야한다는 것이 이상하다고 생각할 수도 있습니다.

그러나 DST (일광 절약 시간제)는 2011/3/13에 시작되었으며 2011/11/6에 종료됩니다. 따라서 DST 기간 동안 GMT-4와 동일합니다. DST와

확인 뉴욕 시간 : http://www.timeanddate.com/worldclock/city.html?n=179

0

나는이 질문에 (코드)가 this one과 관련이있을 수도 있겠죠. 그래서 당신의 해결책이 있습니다. Btw, 다른 시간대에서 UTC로 시간을 변환하는 것에있어 잘못된 점을 발견 했습니까? UTC가 일광 절약 시간을 준수하지 않으므로 함수의 마지막 매개 변수 (부울 true/false)를 사용할 필요가 없으므로 기본적으로 함수의 결과와 같은 시간에 함수에 DST가 포함되거나 포함되지 않습니다.

관련 문제