2012-10-28 68 views
0

我想設置一個php,它爲每年的9月1日設置日期。我使用CRON來說明每次日期是9月7日,那麼php實際上會更新數據庫中的日期爲9月7日之前一週的行(9月9日)。錯誤的PHP輸出mktime()

現在下面的代碼我測試了10月28日,當我回顯$selectedDate它輸出2012-10-28這很好。但是,當我將日期更改爲9月1日時,它輸出`2011-12-01,這顯然是不正確的。它應該輸出2013-09-01,因爲下一個9月的日期將在2013年。然後在2013年9月1日過後,該年應該更改爲2014等。

我該如何得到正確的日期輸出?

下面是代碼:

$createDate = mktime(0,0,0,09,01,date("Y")); 
$selectedDate = date('Y-m-d', ($createDate)); 
+1

建議使用'DateTime'對象來保存自己痛苦的世界。 –

回答

3

這是因爲09被解釋爲一個八進制,這是無效的。

它的工作原理是當你通過9,而不是09預期:

$createDate = mktime(0,0,0,9,1,date("Y")); 
//      ^^ No preceeding 0s. 
$selectedDate = date('Y-m-d', ($createDate)); 

var_dump($createDate, $selectedDate); 
+0

@cbuckley:非常小,確實很小。沒關係:) –

+0

對不起,很無聊:-) – cmbuckley