2010-10-11 79 views
5

PHP中有可能獲取給定位置的時區偏移量嗎?例如。當給定位置「悉尼/澳大利亞」以獲得時區偏移量爲「+1100」時。考慮到節省夏令時(即,它意識到夏令時並根據調整偏移),該功能將用於該功能。獲取給定位置的時區偏移量

+0

您是否試圖在給定的時區顯示日期/時間? – 2010-10-11 23:02:58

+0

你是指官方時區名稱,還是世界上的任何位置? – 2010-10-11 23:08:51

+0

@david。我正在存儲UTC,我希望能夠將該時間戳轉換爲任何當地時間。 – Luke 2010-10-12 00:02:22

回答

6

要顯示本地日期/時間,您可以使用以下內容,其中'Europe/Berlin'將被用戶的時區替換。

$date = new DateTime($value); 
$date->setTimezone(new DateTimeZone('Europe/Berlin')); 
echo $date->format('Y-m-d H:i:s'); 
3

不知道爲什麼你需要「1100」(而不是十進制表示),但你可以使用這個:

$dt = new DateTime(null, new DateTimeZone('Australia/Sydney')); 
$offset = $dt->getOffset()/60/60; // 11 

$hours = intval($offset); 
$minutes = str_pad((string)($offset - $hours) * 60, 2, '0', STR_PAD_RIGHT); 
echo $hours.$minutes; // 1100 

'2010-10-01'更換null,你會得到1000

17

您可以使用類。

<?php 
$timezone = new DateTimeZone("Australia/Sydney"); 
$offset = $timezone->getOffset(new DateTime("now")); // Offset in seconds 
echo ($offset < 0 ? '-' : '+').round($offset/3600).'00'; // prints "+1100" 
?>