2012-08-11 103 views
1

我需要使用GMT時間轉換日期和時間的幫助。目前我使用的是使用時區的Convertdatetime,但我需要根據從下面的下拉列表中選擇的GMT轉換日期和時間,只使用GMT和now()函數用於將日期和時間存儲到MySQL(服務器時間)?根據格林尼治標準時間轉換日期和時間

例如(2012年8月11日18時45分〇〇秒) 阿富汗 到週六,2012年8月11日下午5時43

安道爾 下午三時16 週六,2012年8月11日,

<option value="Afghanistan">(GMT+4:30) Afghanistan</option> 
<option value="Andorra">(GMT +1:00) Andorra</option> 
<option value="United Arab Emirates">(GMT +04:00) United Arab Emirates</option> 
<option value="Antigua and Barbuda">(GMT +04:00) Antigua and Barbuda</option> 


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

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

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

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

    $date = new DateTime($gmttime); 
    $date->modify("+$diff seconds"); 
    $timestamp = $date->format("m-d-Y H:i:s"); 
    return $timestamp; 
} 
ConvertLocalTimezoneToGMT('2012-08-11 17:24:00.000','Asia/Calcutta'); 

輸出:2012年11月8日11時54分00秒|| GMT = IST-5.5

回答

0

下面的代碼可以給你不同的時區,以秒之差:

$timezone = new DateTimeZone("Asia/Karachi"); 
$offset = $timezone->getOffset(new DateTime("now")); 

以任何不是簡單地選擇了用戶這幾秒鐘添加到時間更換Asia/Karachi

DateTimeZone ::的getOffset - 返回時區從GMT

偏移

http://www.php.net/manual/en/class.datetimezone.php

+0

@穆罕默德艾哈邁德扎費爾:感謝您的回覆,但我已經從下拉菜單中獲得gmt值,根據gmt值,我需要轉換爲國家的日期和時間 – user1578849 2012-08-11 14:21:36

1

要更改時區,您只需要使用的setter setTimezone

$systemTz = new DateTimezone($system_timezone); 
$gmt = new DateTimeZone('GMT'); 
$serverTz = new dateTimezone($server_timezone); 
$dateServer = new DateTime($sqlResult['date_column'],$serverTz); 
$gmt = clone $dateServer; 
$gmt->setTimezone($gmt); 
$dateSyst = clone DateServer; 
$dateSyst->setTimezone($systemTz); 

然後,只要你想,你可以格式化。

相關問題