2012-09-10 152 views
0

在我的申請,我只是想在本地時間GMT和GMT轉換爲本地時間。我有以下兩種方法可以做到這一點。PHP 5.2.17:當地時間轉換爲GMT和GMT本地時間

function GmtTimeToLocalTime($date) { 
    $gmt_time = date("Y-m-d H:i:s", $date); 
    date_default_timezone_set("UTC"); 
    $timestamp_in_gmt = strtotime($gmt_time); 
    date_default_timezone_set('Asia/Calcutta'); 
    $local_time = date("Y-m-d H:i:s", $timestamp_in_gmt); 
    //date_default_timezone_set("UTC"); 
    return $local_time; 
} 

function LocalTimeToGmtTime($date) { 
    $local_time = date("Y-m-d H:i:s", $date); 
    date_default_timezone_set('Asia/Calcutta'); 
    $timestamp_in_localtime = strtotime($local_time); 
    date_default_timezone_set("UTC"); 
    $gmt_time = date("Y-m-d H:i:s", $timestamp_in_localtime); 
    //date_default_timezone_set('Asia/Calcutta'); 
    return $gmt_time; 
} 

但是我得到了這個日期1970-01-01的所有輸入。

請爲我提供正確的方法。 在此先感謝

+0

爲LocalTimeToGmtTime() - 1969-12-31 12點03分32秒的成績 – Sridhar

+0

爲GmtTimeToLocalTime() - 1970-01-01 6時02分49秒的成績 – Sridhar

回答

2

或許,如果你用DateTime對象嘗試,你會得到更好的結果:

<?php 
function GmtTimeToLocalTime($time) { 
    $date = new DateTime(date('Y-m-d h:i:s',$time),new DateTimezone('UTC')); 
    $date->setTimezone(new \DateTimezone('Asia/Calcutta')); 
    return $date->format("Y-m-d H:i:s"); 
} 
+0

$日期=新的日期時間:: createFromFormat ('U',$ time,new DateTimeZone('UTC'));編譯出錯 - 需要$符號 – Sridhar

+0

哼不需要$,但需要刪除「新」,這是一個錯字 – artragis

+0

由於現在它的工作 – Sridhar

2

的快捷方式應該是看DateTime,並使用DateTime::setTimezone修改與GMT時區爲本地時間,反之亦然。

編輯:當然,您可以使用DateTime::setTimestampDateTime::createFromFormat填寫此DateTime與您的時間戳。

0

通行證在下面的函數來獲得時區經緯度。

function getTimezoneGeo($latForGeo, $lngForGeo) { 
     $json = file_get_contents("http://api.geonames.org/timezoneJSON?lat=".$latForGeo."&lng=".$lngForGeo."&username=demo"); 
     $data = json_decode($json); 
     $tzone=$data->timezoneId; 
     return $tzone; 
    } 
相關問題