2010-05-23 227 views
1

我有一個時區名稱,我希望時區的名稱加上它的偏移量。反向時區偏移量

例如,亞洲/迪拜是+4,我想扭轉到-4 ...,並將它解析爲EDT

語言:PHP

下面是什麼它看起來一個樣像:

$timezone = "Asia/Dubai" 
$offset = $timezone->getOffset(); 
$offset 0 - $offset; 
$timezone = $offset->getTimeZone(); 

輸出:EDT

+1

有點奇怪的事情可以做...我可以問爲什麼嗎?而且,您想如何處理大於±6的偏移量?偏移量應該加倍,然後增加或減去24以回到實時區域? – 2010-05-23 06:34:31

+0

那麼,我有錯誤的邏輯。我實際上需要扭轉偏移,所以+4變成-4。顯示日期時,我們添加4進行本地化,搜索時,我們減去日期以說明本地化日期。這就是目前的工作原理,不要責怪我。 – HyderA 2010-05-23 06:43:19

+0

你能舉個例子嗎?這可能是一次性轉換,所以速度不是主要因素? – VolkerK 2010-05-23 07:42:16

回答

0

(PHP 5> = 5.2.0)

,以獲得與UTC

<?php 
$offUTC = new DateTime('now', new DateTimeZone('Asia/Dubai')); 

echo $offUTC->getOffset(); // in seconds 
echo ($offUTC->getOffset()/3600); // in hours 
?> 

偏移要獲得兩個任意區域

<?php 
$timezoneDubai = new DateTimeZone("Asia/Dubai"); 
$timezoneEDT = new DateTimeZone("America/New_York"); // note EDT may work, support is not clear 

$datetimeDubai= new DateTime("now", $timezoneDubai); 
$datetimeEDT = new DateTime("now", $timezoneEDT); 

$timeOffset = $datetimeEDT->getOffset($datetimeDubai); 

echo $timeOffset; // in seconds 
echo ($timeOffset/3600) // in hours 
?> 

我不是你的目標是什麼確保100%之間的時間差,但這應該幫助你。也可以在這裏查看更多的DateTime函數:http://www.php.net/manual/en/book.datetime.php