0

この関数は、2 つの日付の間の日付の配列を返します。

11 月または 3 月を引数として指定すると、1 日少ない配列が得られます。他の月は完全に正常に機能します。私はまったく無知です。

function getListofDatesInRange2($fromDate, $toDate)
{
    $fromDate = str_replace("-","/", $fromDate);
    $toDate = str_replace("-","/", $toDate);

    $dateMonthYearArr = array();
    $fromDateTS = strtotime($fromDate);
    $toDateTS = strtotime($toDate);

    for ($currentDateTS = $fromDateTS; $currentDateTS <= $toDateTS; $currentDateTS += (60 * 60 * 24)) {
        $currentDateStr = date("m-d-Y",$currentDateTS);
        $dateMonthYearArr[] = $currentDateStr;
    }

return $dateMonthYearArr;
}

私はそれを再コーディングし、while ループが私の問題を解決しました。(そもそも何が問題だったのかわかりませんが)

function getListofDatesInRange2($fromDate, $toDate)
{
$fromDate = str_replace("-","/", $fromDate);
$toDate = str_replace("-","/", $toDate);

$dateMonthYearArr = array();
$fromDateTS = strtotime($fromDate);
$toDateTS = strtotime($toDate);

array_push($dateMonthYearArr, date('m-d-Y', $fromDateTS));
while($fromDateTS < $toDateTS) {
    $fromDateTS += 86400;
    array_push($dateMonthYearArr, date('m-d-Y', $fromDateTS));
}
return $dateMonthYearArr;

}

4

1 に答える 1

1

ほぼ確実に、これは何年も前に、何らかの論理的なエンディアン (ほとんどのコンピューティングではビッグ エンディアン、英国英語ではリトル エンディアン) ではなく、日を月と年の間に入れることを決定した何人かの愚か者によって引き起こされます。

代わりに、入力日付をフォーマットしてYYYY-mm-ddから入力してくださいstrtotime。これにより、常に正しい日付を取得できます。

これが実際にあなたの問題であることをテストするには、次のことを試してください。

$fromDateTS = strtotime($fromDate);
echo date("m-d-Y",$fromDateTS);

表示されている日付が入力した日付と同じであることを確認してください。そうではない可能性があります。

于 2012-04-19T21:45:51.027 に答える