ホームページ >バックエンド開発 >PHPチュートリアル >ところで、php にバグを見つけましたか?翌月の末日を計算してみましょう!
早速、コードに進みましょう:
$BeginDate="2015-05-31";//新的获取指定月份的最后1天echo date("Y-m-t",strtotime("+1 months",strtotime($BeginDate)));
$BeginDate="2015-05-31";echo date("Y-m-d t",strtotime("+1 months $BeginDate"));2015-07-01 31
ああ、勉強になりました
と思いました。その +1 か月は今月の次の月でした
もしそうなら、php にまだバグがあると思います。この場合、1 ずつ進むのではなく、6 月の最終日に戻るはずです
あなたは、それは間違って理解しました! !
翌月の最終日に別の構文を取得します。
はは、1か月追加すると、7月1日になるはずです。
あなたの論理によれば、1 日追加しても 5 月 31 日と同じになりますか?
バグ?それはあなたがロジックをうまく処理できていないからです
月末を取得するには、通常、翌月の 1 日を使用し、そこから 1 日を減算します
アルゴリズムを自分で変更したので、問題は非常にうまく解決されました
多くの方法がありますが、私はまだこれを主張しています。同じ投稿者が言ったように、5月は31日なので、+1か月は6月31日ですが、6月は30日なので、結果は次のようになります。 7 月 1 日、この strtotime の +1 か月はバグです。
自分で変更する方法は次のとおりです:
$begindate="2015-05-31";$enddate=date("Y-m-01",strtotime($begindate));//获得月初$enddate=date("Y-m-t 23:59:59",strtotime("$enddate +1 month"));//月初加1 month然后计算月末最后一天
$BeginDate="2015-05-31";echo date("Y-m-d t",strtotime("+1 months $BeginDate"));2015-07-01 31
はい
ただし、注意してください: これは PHP のルールではなく、英語での時間計算のルールです