2016-07-05 44 views
0

我有這行代碼:PHP的日期添加一天內,從數據庫中的信息

<?= date('F dS, Y',$user_info['date_of_birth']) ?> 

它得到每個用戶的UNIX的生日日期,並將其轉換在一個正常的日期。 唯一的問題是它會提前一天顯示。 例如,數據庫中的unix日期是1990年5月11日。 在視圖中,它將輸出,1990年5月10日。 您知道如何解決此問題嗎?

在此先感謝

+2

我想看看時區問題。 – chris85

+0

這也許是問題所在。你知道我可以在上面的代碼行中添加一天嗎? –

+0

不要這樣做。解決問題,以便您的時區相匹配。 – chris85

回答

0

要明確地回答你的問題,你可以做到以下幾點:

<?=date('F dS, Y',($user_info['date_of_birth'] + 86400))?> 

其中86400是秒在一天的數量。


但是,正如其他人所建議的那樣,您可以並且應該將數據庫和Php同步到UTC/GMT時間。

對於PHP時區,執行你的腳本的頂部以下內容:

date_default_timezone_set('UTC'); 

對於SQL,這取決於你正在使用的數據庫(我不相信你指定你正在使用的數據庫)。

+0

謝謝,完美的作品。我現在會看看時區! –

0

檢入同步您的MySQL和PHP時區。看看這個類似的問題/回答:

Set timezone in PHP and MySQL

+0

謝謝!對於信息:)但你知道如何在上面的代碼行添加+1天嗎? –

+0

嘗試這樣:date('F dS,Y',strtotime($ user_info ['date_of_birth']。'+1 day'))。 – Nick

+0

我同意克里斯,你應該採取步驟來調整時區,所以你不會在應用程序的其他地方遇到類似的問題。 – Nick

0

這可能是你在服務器上的時間錯誤。是你accesse它外殼可以通過date命令來檢查:

[[email protected] ~]$ date 
Tue Jul 5 04:17:00 UTC 2016 

,如果沒有,那麼你很可能將不得不這樣做:如果你有機會到MySQL控制檯檢查

define('TIMEZONE_OFFSET', 86400); 
<?=date('F dS, Y',($user_info['date_of_birth'] + TIMEZONE_OFFSET))?> 

再次它的時區設置。

set-timezone-in-php-and-mysql

也可手動設置PHP defaulte時區:

date_default_timezone_set('UTC'); 
相關問題