私は、日付を取得する次のコードを持って、1ヶ月を引く。これは完全に機能します。月の最後の日付を取得するエラー
$date = '22-05-2016';
print(date("Y-m-d 23:59:59", strtotime($date.' -1 months')));
// outputs 2016-04-22 23:59:59
強制的に月末にする必要がある場合があります。このため私はY-m-d
の代わりにY-m-t
を使用します。これは完全に機能します。解析された日付が実際にその月の最後の日であるとき
$date = '22-05-2016';
print(date("Y-m-t 23:59:59", strtotime($date.' -1 months')));
// outputs 2016-04-30 23:59:59
問題が来ます。その後、次の月の終わりに反転します。
$date = '31-05-2016';
print(date("Y-m-t 23:59:59", strtotime($date.' -1 months')));
実際の出力2016年5月31日夜11時59分59秒(削除されていない1ヶ月)
所望の出力2016年4月30日夜11時59分59秒
EDIT:フィドル例http://ideone.com/0fqlor
"月の数学" 数ヶ月は異なるサイズであるため、信頼性の高いことはありません:28,29,30,31。あなたが3月1日にいる場合は、1ヶ月を引いたものが何であるべきですか? 2月1日?それはうるう年に起こり、febは行進の前に来るから29日を引いた?マーチは31日かかるのでマイナス31日?もしあなたが3月31日に行けば、2月31日はない - それは3月3日に対応するだろう。 strtotimeはあなたの意図が何であるかわからないので、できる限りベストを尽くします。結果があいまいな場合はロジックを提供する必要があります。 –
ご使用のPHPのバージョンは? PHP 7.0.3で問題を再現することはできません。 '$ date = '31 -05-2016 ';' 'print(日付(" Ymd 23:59:59 "、strtotime($ date。' -1 months ')));出力_2016-05-01 23 :59:59_ – GaijinJim
「月末」と言った月の最後の日を特定することを意味しますか? – Ray