1

次の関数を使用して1か月の範囲を取得しようとしています。

static public function getMonthRange($month, $year)
{
    $date = DateTime::createFromFormat('d-m-Y','01-'.$month.'-'.$year);
    $start = $date->getTimestamp();

    return array(
        'start' => $start,
        'end' => $date->modify('first day of next month')->getTimestamp()
    );
}

これで、3月を除いて正常に機能します。次を使用して1か月あたりの日数を計算して値を確認した((end - start) / 60 / 60 / 24)ところ、3月は30.958333333333日であり、他の月は正しい日数であることがわかりました。

次のような計算で自分で日付を入力することにしました。

$march = ((strtotime('2012-04-01') - strtotime('2012-03-01')) / 60 / 60 / 24); //30.95833..
$april = ((strtotime('2012-05-01') - strtotime('2012-04-01')) / 60 / 60 / 24); //30
$may =   ((strtotime('2012-06-01') - strtotime('2012-05-01')) / 60 / 60 / 24); //31

それでも行進の日数が間違っていました。私のアプローチに何か問題がありますか?そして更に重要なことに; これを修正するにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

2

3つの言葉:夏時間。

3月は1時間足りません。

また、関数はPHPに存在します:http://php.net/manual/en/function.cal-days-in-month.php

于 2012-10-02T11:20:15.590 に答える