你真的知道 strtotime 嗎?

課堂小提問

   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~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章