2012-12-18 228 views
3

在下面的代碼中,我需要爲2個國家/地區的時區獲取unixtimestamp。代碼的輸出會給我一個不同的日期,但時間戳並不相同。它仍然是一樣的。任何人都可以提供一個解決方案來獲得不同時區的不同時間戳嗎?提前致謝。php中不同時區的時間戳

date_default_timezone_set('Asia/Calcutta'); 
echo date("Y-m-d H:i:s")."<br/>"; //2012-12-18 12:12:12 
echo strtotime(date("Y-m-d H:i:s",time()))."<br/>"; //1355812934 

date_default_timezone_set('Europe/London'); 
echo date("Y-m-d H:i:s")."<br/>"; //2012-12-18 06:12:12 
echo strtotime(date("Y-m-d H:i:s",time()))."<br/>"; //1355812934 
+0

時間戳是連續的,它與時區無關,在地球上的每個地方都是一樣的。 – zerkms

+1

「任何人都可以提供解決方案,爲不同的時區獲取不同的時間戳嗎?」 ---這是一個錯誤的問題。你的**原始**任務是什麼? – zerkms

+0

我需要根據不同的時區使用php unixtimestamp和javascript(不使用任何ajax請求)來顯示servertime。 – shyammtp

回答

3

您可以使用date("Z")以秒爲單位獲取時區偏移量。然後根據需要進行計算。

date_default_timezone_set('Asia/Calcutta'); 
echo 'Local time : '.date("r").'<br>'; // local time 
echo 'Offset : '.date("Z").'<br>'; // time zone offset from UTC in seconds 
echo 'UTC Time : '.date('r', strtotime(date("r")) + (date("Z")*-1)); echo '<br><br>'; // this is UTC time converted from Local time 

date_default_timezone_set('Europe/London'); 
echo 'Local time : '.date("r").'<br>'; // local time 
echo 'Offset : '.date("Z").'<br>'; // time zone offset from UTC in seconds 
echo 'UTC time : '.date('r', strtotime(date("r")) + (date("Z")*-1)); echo '<br><br>'; // this is utc time converted from Local time 

輸出:

Local time : Tue, 18 Dec 2012 10:53:07 +0530 
Offset : 19800 
UTC Time : Tue, 18 Dec 2012 05:23:07 +0530 

Local time : Tue, 18 Dec 2012 05:23:07 +0000 
Offset : 0 
UTC time : Tue, 18 Dec 2012 05:23:07 +0000 
+0

感謝我得到了我所需要的...... :-) – shyammtp

+0

[PHP時區](https://secure.php.net/manual/en/timezones.php) –

2

這應該工作,我改變原來的使用PHP DataTimeZone類的方式。試試看,應該很容易遵循:

$dateTimeZoneCalcutta = new DateTimeZone("Asia/Calcutta"); 
$dateTimeCalcutta = new DateTime("now", $dateTimeZoneCalcutta); 
$calcuttaOffset = $dateTimeZoneCalcutta->getOffset($dateTimeCalcutta); 
$calcuttaDateTime = date("Y-m-d H:i:s", time() + $calcuttaOffset); 

echo 'Local Server Time: ' . date("Y-m-d H:i:s", time()) . '<br />'; 
echo 'Calcutta Time: ' . $calcuttaDateTime . '<br />'; 
echo 'Calcutta Timestamp: ' . strtotime($calcuttaDateTime) . '<br />'; 
echo '<br /><br />'; 

$dateTimeZoneLondon = new DateTimeZone("Europe/London"); 
$dateTimeLondon = new DateTime("now", $dateTimeZoneLondon); 
$londonOffset = $dateTimeZoneLondon->getOffset($dateTimeLondon); 
$londonDateTime = date("Y-m-d H:i:s", time() + $londonOffset); 

echo 'Local Server Time: ' . date("Y-m-d H:i:s", time()) . '<br />'; 
echo 'London Time: ' . $londonDateTime . '<br />'; 
echo 'London Timestamp: ' . strtotime($londonDateTime) . '<br />'; 
+0

基本上這應該需要(PHP 5> = 5.2。 0)。感謝您的解決方案。 – shyammtp

+0

@shyammtp沒問題我應該在我的回答中提到 – PhearOfRayne