2013-12-17 209 views
0

我想將GMT日期時間轉換爲IST日期時間爲此目的我已經嘗試了下面的代碼,但沒有得到所需的結果。想要將GMT日期時間轉換爲IST日期時間

function ConvertGMTToLocalTimezone($gmttime,$timezoneRequired) 
    { 
     $system_timezone = date_default_timezone_get(); 

     date_default_timezone_set("GMT"); 
     $gmt = date("Y-m-d h:i:s A"); 

     $local_timezone = $timezoneRequired; 
     date_default_timezone_set($local_timezone); 
     $local = date("Y-m-d h:i:s A"); 

     date_default_timezone_set($system_timezone); 
     $diff = (strtotime($local) - strtotime($gmt)); 

     $date = new DateTime($gmttime); 
     $date->modify("+$diff seconds"); 
     $timestamp = $date->format("m-d-Y H:i:s"); 
     return $timestamp; 
    } 

$ISTtime=ConvertGMTToLocalTimezone('Tue, 17 Dec 2013 07:23:56 +0000','Asia/Calcutta'); 
echo $ISTtime; 

結果:二○一三年十二月一十七日18時34分02秒

什麼,我做錯了什麼?

回答

1

你爲什麼不只是這樣做:

$timestamp = strtotime('Tue, 17 Dec 2013 07:23:56 +0000'); 
date_default_timezone_set("Asia/Calcutta"); 
echo date('r', $timestamp); 

輸出

Tue, 17 Dec 2013 12:53:56 +0530 
0

你可以試試這個,你可以使用$new = new DateTimeZone('Asia/Kolkata');//IST

$new = new DateTimeZone('Asia/Kolkata');//IST 
    $date = new DateTime(gmdate("m/d/Y H:i:s"), 'Tue, 17 Dec 2013 07:23:56 +0000'); 
    $date->setTimezone($new); 
    echo $date->format('m-d-Y H:i:s'); 
+0

你並不需要使用gmdate()或日期()與DateTime。 – vascowhite

0

這是使用簡單的練習dateTime類別: -

function ConvertGMTToLocalTimezone($gmttime,$timezoneRequired) 
{ 
    $date = new \DateTime('Tue, 17 Dec 2013 07:23:56 +0000'); 
    $date->setTimeZone(new \DateTimezone($timezoneRequired)); 
    return $date->format('D, d M Y H:i:s O'); 
} 

$ISTtime=ConvertGMTToLocalTimezone('Tue, 17 Dec 2013 07:23:56 +0000','Asia/Calcutta'); 
echo $ISTtime; 

輸出: -

Tue, 17 Dec 2013 12:53:56 +0530 

See it working

如果你有PHP> = 5.4 this will work: -

function ConvertGMTToLocalTimezone($gmttime,$timezoneRequired) 
{ 
    return (new \DateTime('Tue, 17 Dec 2013 07:23:56 +0000'))->setTimeZone(new \DateTimezone($timezoneRequired))->format('D, d M Y H:i:s O'); 
} 
相關問題