2011-01-21 142 views
3

我認爲這是一個愚蠢的問題,但似乎我找不到答案。獲取UNIX時間戳的正確時間

我有這個時間戳:1295598602.

在我的PHP腳本我有:

$日期=日期( 'Y-M-d',1295598602); $ hour = date('H',1295598602)。 ':00';

這將返回:

日期:2011-01-21
小時:03:00

現在我去了一個在線轉換網站進行測試。我使用this one。 2011 但似乎此時間戳值是

週五,1月21日8時30分02秒GMT現在

,哪一個是正確的?

+3

這將取決於你的服務器的時區,以及在線服務 – 2011-01-21 09:14:50

回答

5

使用正確的時區:

>> date_default_timezone_get(); 
'UTC' 
>> date('Y-m-d h:i:s',1295598602); 
'2011-01-21 08:30:02' 
>> date_default_timezone_set('CET'); 
true 
>> date('Y-m-d h:i:s',1295598602); 
'2011-01-21 09:30:02' 
>> date_default_timezone_set('UTC'); 
true 
>> date('Y-m-d h:i:s',1295598602); 
'2011-01-21 08:30:02' 
4

在GMT/UTC(他們幾乎but not quite完全一樣),其時間戳確實是週五,2011年1月21日8點30分02秒GMT。

如果你在不同的時區,但總是希望格林威治時間,你需要使用gmdate()函數,而不是date()

+0

不是真的。只需設置正確的時區。 – Mchl 2011-01-21 09:25:46

+0

date_default_timezone_set()僅在PHP 5.1.0及更高版本中使用,可能無法使用。 – Alnitak 2011-01-21 09:27:31

0

根據date()功能描述,

時間戳是可選的,默認 的時間的值()。

並根據time()函數描述,它返回GMT時間戳。

因此,PHP不會轉換到您的時區,而onlineconversion.com不會。

1

都正確。在PHP代碼片段中調整時區。嘗試date_default_timezone_set('UTC');以獲得適當的未調整值。

1

另一個選項是設置腳本的默認時區。

例如,

date_default_timezone_set('Europe/London'); 
$timestamp = '1295598602'; 
echo date('Y-m-d H:i:s', $timestamp); 

都可以獲得相同的結果在線轉換工具顯示。

PHP中有許多與時區相關的功能,可以讓您修改顯示的時區。

您可以查看PHP文檔爲您的選項列表:http://www.php.net/manual/en/ref.datetime.php