2013-03-08 109 views
2

這是一個PHP問題。 當我在我的本地服務器上,並在我的託管網站測試此代碼Php mktime()vs date()

echo date("d-m-y h:i:S"); 

(這兩個具有不同的時區),他們返回不同的日期時間值,符合市場預期。 但當我嘗試這個代碼

echo mktime(); 

我看到兩個servers.Does mktime()返回秒從1970年的數量爲標準時區,無論你的時區是同樣的結果?

謝謝您的回答

+2

默認情況下'date()'使用服務器上的本地時區設置,而'mktime()'使用GMT。 – Sammitch 2013-03-08 19:06:30

回答

0

documentation

mktime - 取得Unix時間戳的日期

與您最初的問題合成本:

是否mktime()返回的秒數從1970年開始的標準時區,無論您的時區是什麼?

是的。

+0

這是否意味着,我可以安全地使用任何服務器我使用mktime,即使我將我的網站從主機移動到另一個,因爲mktime是 - 區域安全嗎?但我不能相信date(),因爲它依賴於本地區域? – user1800007 2013-03-08 19:21:13

+1

@ user1800007是的。你可以依靠'mktime()'在你的服務器上始終返回相同的結果。 (假設服務器配置正確,您的主機應該是這種情況) – poitroae 2013-03-08 19:22:11

+0

哦,我想我明白你的意思。你的意思是主機管理員應該爲他的「時區」設置正確的時間,mktime()將做否則,如果他/她爲他的時區設置了錯誤的時間,mktime()會給我們錯誤的值。 – user1800007 2013-03-08 19:24:41

0

由於documentation提到mktime()收益從時間GMT時代的開始,而date()(沒有第二個參數)秒返回當地時區的時間。

1

mktime()返回 對應於給定參數的Unix時間戳。此時間戳是 一個長整數,其中包含Unix時期1970年1月1日00:00:00 GMT)與指定的時間之間的秒數。

date()返回根據使用給定的 整數時間戳或如果沒有時間戳給出當前時間(本地時區)在給定的格式字符串格式化的 字符串。

+0

」...... Unix時代(1970年1月1日00:00:00 GMT)與指定時間之間的秒數。「指定的時間?我使用這樣的mktime:mktime()。不指定任何東西。 – user1800007 2013-03-08 19:28:32

+1

你甚至沒有理會閱讀文檔..'從右到左的順序可以省略參數。根據當地的日期和時間,任何這樣省略的參數將被設置爲當前值。' – SeanWM 2013-03-08 19:34:52

+0

對不起,我在回答後檢查了它的錯誤。謝謝你的回答,但是文檔讓我感到困惑。它說:「根據本地日期和時間「,我懷疑如果我省略參數,它使用GMT作爲標準參數,而不是本地日期和時間。這與我的問題的第二部分矛盾。 – user1800007 2013-03-08 19:39:35