strtotime 對於減month 的bug

2021-08-17 21:59:07 字數 1058 閱讀 9883

strtotime問題:

strtotime('-x month'); 在涉及到月份修改的時候,可能不會得到預料的結果。

此為php的乙個bug:

如:當前時間為: 2011-08-31 17:21:22

<?php

date_default_timezone_set('asia/shanghai');

$t = time();

print_r(array(

date('y年m月',$t),

date('y年m月',strtotime('- 1 month',$t)),

date('y年m月',strtotime('- 2 month',$t)),

));?>

上面**輸出:

array

([0] => 2023年08月

[1] => 2023年07月

[2] => 2023年07月

)而預期的結果是:

array

([0] => 2023年08月

[1] => 2023年07月

[2] => 2023年06月

)****************************************====

可以用如下方法解決:

<?php

date_default_timezone_set('asia/shanghai');

$first_day_of_month = date('y-m',time()) . '-01 00:00:01';

$t = strtotime($first_day_of_month);

print_r(array(

date('y年m月',$t),

date('y年m月',strtotime('- 1 month',$t)),

date('y年m月',strtotime('- 2 month',$t)),

));?>

輸出:array

([0] => 2023年08月

[1] => 2023年07月

[2] => 2023年06月

)

對於自加自減的理解

前言 c語言中很多地方都會用自加 自減 運算子來參與一些運算,這也是c語言的主要特色之一,如果可以掌握並合理的利用這一特性,可以優化我們的c程式。而自加自減也是對於剛接觸c語言程式設計的人來說,比較難想通,很容易造成錯誤,可是考試的卷子也經常出現類似的題目。自增自減的定義 自增 使變數的值加1 自減...

令人困惑的strtotime

經常會有人被strtotime結合 1 month,1 month,next month的時候搞得很困惑,然後就會覺得這個函式有點不那麼靠譜,動不動就出問題.用的時候就會很慌 這不,剛剛就有人在微博上又問我 鳥哥,今天是2018 07 31 執行 date y m d strtotime 1 mon...

令人困惑的strtotime

經常會有人被strtotime結合 1 month,1 month,next month的時候搞得很困惑,然後就會覺得這個函式有點不那麼靠譜,動不動就出問題.用的時候就會很慌 這不,剛剛就有人在微博上又問我 今天是2018 07 31 執行 date y m d strtotime 1 month ...