2015-09-10 58 views
1

我的情況是總是獲得一天後的日期。 例如,我有這個值-243219600其相對於日期18/04/1962PHP中的日期函數總是在日期後面一天排除

一個

date('d/m/Y', -243219600); 

輸出後:

17/04/1962 

-243219600從秒1970年1月1日00:00:00 UTC在javascripthere你得到正確的日期。

+0

我得到適當的'18/04/1962'作爲輸出,當我嘗試你的代碼。 – jitendrapurohit

+0

我得到了17日 - 我正在使用UTC。具體用'$ dt = new DateTime(); $ DT->的setTimestamp(-243219600); echo $ dt-> format('r');'我得到'1962年4月17日星期二23:00:00'。所以,非常接近18日,但並不完全。 –

+0

@JitendraPurohit你能告訴我你正在使用什麼時區? – Alaeddine

回答

2

date()的輸出取決於配置的時區。如果你添加時間和時區,你可以看到它。在我的情況下,它是CET:

解決方案與 date()

echo date('d/m/Y H:m:i T', -243219600); 
//prints: 18/04/1962 00:04:00 CET 

如果你想date()使用UTC,使用date_default_timezone_set

date_default_timezone_set('UTC'); 
echo date('d/m/Y H:m:i T', -243219600);" 

輸出

17/04/1962 23:04:00 UTC 

(你看,因爲它是UTC的午夜前一小時,日期取決於該時區)

解決方案與DateTime

如果它是由一個Unix時間戳構成的DateTime類總是使用UTC:

documentation

注:

$timezone參數和當前時區被忽略,當$time參數或者是UNIX時間戳(例如, @ 946684800)或指定時區(例如2010-01-28T15:00:00 + 02:00)。

所以,你可以使用下面的代碼,以及:

echo (new DateTime('@-243219600'))->format('d/m/Y'); 
+0

我仍然得到** 17/04/1962 **當它應該是** 18/04/1962 ** – Alaeddine

+1

不,它不應該。在UTC是** 17.04.1962 23:00:00 **。 –

+0

'new DateTime('@'。strtotime('+ 1 day','@ -243219600'));'顯示正確的日期 – Alaeddine

2

檢查您的PHP的時區,將其設置爲與您的計算機相同(因爲您使用JavaScript)。