課堂小提問:
echo date('Y-m-d', strtotime("-1 month", strtotime("2017-03-31")));輸出什麼?
echo date('Y-m-d', strtotime(" +1 month", strtotime("2017-08-31")));輸出又是什麼?
現在公佈正確答案了:
echo date('Y-m-d', strtotime("-1 month", strtotime("2017-03-31")));//輸出2017-03-03
echo date('Y-m-d', strtotime(" +1 month", strtotime("2017-08-31")));//輸出2017-10-01
小夥伴們,你們答對了嗎?
沒有答對也不要慌,接着往下看
…
爲什麼出現這種情況呢?爲了讓大家更容易理解,我們來模擬一下date內部對此的處理邏輯:
第一步:先做 -1 month,2017-07-31的 -1 month 就是2017-06-31
第二步:做日期規範化,因爲6月沒有31號,只有30號,多了一點要加上,所以6月31就等於了7月1日
又有人說了,我不想讓日期規範化,我希望月底的 -1 month 或者 +1 month也是月底,怎麼搞?
別急,這是我接下來要說的
從 PHP5.3 開始,date新增了一系列修正短語,來明確這個問題,也就是“first day of”和“last day of”,你可以限定好不要讓date自動“規範化”
echo date('Y-m-d', strtotime("last day of -1 month", strtotime("2017-03-31")));//輸出2017-02-28
echo date('Y-m-d', strtotime("first day of -1 month", strtotime("2017-03-31")));//輸出2017-09-01
好啦,小夥伴們都記住了吧
記住的話,你們也可以當別人的老師了,小小炫耀一番,哈哈,我也是剛入手的知識,熱乎着,大家如果想看一手資料,大手點一下:http://www.laruence.com/2018/07/31/3207.html
那麼,課堂時間到此結束,bye~