2014-10-09 81 views
-1

當我在WAMP上運行這個時,當我相信我應該得到「星期五」時,我得到「星期三」。鑑於明天是2014年10月10日星期五和10日,我有理由相信它應該是星期五。 :-DPHP日期函數生成錯誤的星期幾?

 $start_day = date("D","2014-10-10"); 
     echo $start_day; 

必須失去了一些東西明顯。我從來沒有遇到日期函數的問題。

預先感謝您的寶貴意見。

+0

這也發生我的虛擬主機上,讓我比以往任何時候,我失去了一些東西明顯更擔心。 – irthinker 2014-10-09 20:46:02

+0

'date'不包含字符串。它需要一個時間戳。 – vch 2014-10-09 20:48:23

+1

是的,我現在感覺很蠢,但是我已經達到了一個我完全無視錯誤的地步。可能太少咖啡因/睡眠。 – irthinker 2014-10-09 21:36:00

回答

2

日期函數的第二個參數是代表數的整數自unix時代(1-1-1970)開始以來的秒數,而不是一些自由形式的日期字符串。所以,真的,你問的是一週中的哪一天是在1-1-1970之後的2014年。

你一定想先使用stringtotime:

$start_day = date("D",strtotime("2014-10-10")); 
echo $start_day; 
+0

感謝您的幫助。自從我構造了一個日期時間參數(大約18個月)後,我一直在玩弄Date :: Time結構,以便在返回到此方法之前從字符串中獲取它。 – irthinker 2014-10-09 20:55:09

3

timestamp的參數should be a Unix timestamp (integer),而不是字符串:

timestamp

可選的時間戳參數是一個整數Unix時間戳,如果時間戳沒有給出默認爲當前本地時間。換句話說,它默認爲time()的值。

您可以使用strtotime將字符串轉換爲合適的時間戳。

+0

謝謝你的回覆。 – irthinker 2014-10-09 20:56:29

+0

克里斯,我只是在等待時間倒下。再次感謝! – irthinker 2014-10-09 21:34:38

2

RTM:http://php.net/date

日期()需要使用時間戳作爲其第二個參數。你正在傳遞一個隨機字符串。由於它是一個字符串,它會嘗試將該數字編號轉換爲一個字符串,並最終以「數字」結束。

所以你真的做

date('D', 2010); 

對應於(大約)一月1,1970上午十二時50分00秒

+0

謝謝。我向你保證我讀過文檔。我現在正處於一種混亂的狀態,而且日期時間操縱很生疏。 – irthinker 2014-10-09 20:56:05