2016-05-12 74 views
4

的第一天,我不知道是否有一個「正確」的方法來調用:我知道PHP解析器後 ofsee here)預計一個月PHP的DateTime明年

$endDate = new DateTime('first day of next year'); 

,但next year似乎工作按照預期排序。如果這個月是五月,它將在明年四月一日作爲$endDate

Ofcourse我們可以解決這個與破解:

$endDate = new DateTime('first day of january'); 
$endDate = $endDate->modify('+1 year'); 

但我無法想象沒有人有固定的這個「錯誤」,因爲PHP 5.3 7年前就出來了。

+0

這是否曾被標記爲bugs.php.net上的錯誤?如果不是,爲什麼有人要修復它? –

+0

剛剛搜索了一下bug跟蹤數據庫,並且似乎有一些關於它的開放性問題,有些甚至與2010年一樣老。它就是DateTime解析器的工作方式,但是現在有人會修復此問題 – Loek

回答

6

它不是很明確,你可能會尋找(是否有任何情況下一月是不是第一個月?),但這個工作正常回PHP 5.2

$endDate = new DateTime('1st January Next Year'); 
echo $endDate->format('Y-m-d'); // 2017-01-01 

https://3v4l.org/H5P8s

+2

'January明年第一年「也將在那裏發揮作用。 –

+0

不知道,謝謝! – Loek

+0

省略「st」將給出相同的結果:「明年1月1日」或「明年1月1日」。但是,評論中的「1月1日下一年」不適用於我。在PHP 5.2和5.6中測試 – nggit