30

これが前月の最終日を見つけられない理由が少しわかりません。最終日付が作成される場合を除いて、すべてのステップが正しく機能しているようです。

<?php

$currentMonth = date('n');
$currentYear = date('Y');

if($currentMonth == 1) {
    $lastMonth = 12;
    $lastYear = $currentYear - 1;
}
else {
    $lastMonth = $currentMonth -1;
    $lastYear = $currentYear;
}

if($lastMonth < 10) {
    $lastMonth = '0' . $lastMonth;
}

$lastDayOfMonth = date('t', $lastMonth);

$lastDateOfPreviousMonth = $lastYear . '-' . $lastMonth . '-' . $lastDayOfMonth;

$newLastDateOfMonth = date('F j, Y', strtotime($lastDateOfPreviousMonth));

?>

$lastDateOfPreviousMonth期待どおり 2012-09-30 を返しています。ただし、2012 年 9 月 30 日に変換しようとすると、2012 年$newLastDateOfMonth10 月 1 日に返されます。

編集: 2013 年 1 月 1 日の時点で、これらのいずれかを使用している場合、date("t/m/Y", strtotime("last month"));またはdate('Y-m-d', strtotime('last day of previous month'));これらのいずれかがまだ実行可能である場合、つまり、年の変化を説明しますか?

4

5 に答える 5

96
echo date('Y-m-d', strtotime('last day of previous month'));
//2012-09-30

また

$date = new DateTime();
$date->modify("last day of previous month");
echo $date->format("Y-m-d");

後で編集: php.net ドキュメント - strtotime()、DateTime、および date_create() の相対形式

于 2012-10-01T13:17:21.890 に答える
21

これにはphp関数があります。

echo date("t/m/Y", strtotime("last month"));
于 2012-10-01T13:19:55.520 に答える
4

今月の最初の日 - 1 秒。

echo date('Y-m-d',strtotime('-1 second',strtotime(date('m').'/01/'.date('Y'))));

はこちら

于 2012-10-01T13:19:27.007 に答える