2010-05-23 168 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