ホームページ  >  記事  >  バックエンド開発  >  私の PHP コードが今日の日付が日付範囲内にあるかどうかを正確にチェックしないのはなぜですか?

私の PHP コードが今日の日付が日付範囲内にあるかどうかを正確にチェックしないのはなぜですか?

DDD
DDDオリジナル
2024-11-26 03:42:07562ブラウズ

Why is my PHP code not accurately checking if today's date falls within a date range?

PHP での日付範囲の確認

PHP では、特定の日付が範囲内にあるかどうかを判断する必要がある状況に遭遇することがあります。日付。これは、有効性チェックやスケジュール設定のためのアプリケーションでよく使用されます。

質問:

次のコード:

$paymentDate = date('d/m/Y');
$contractDateBegin = date('d/m/Y', '01/01/2001');
$contractDateEnd = date('d/m/Y', '01/01/2015');

if ($paymentDate > $contractDateBegin && $paymentDate < $contractDateEnd) {
  echo "is between";
} else {
  echo "NO GO!";
}

ただし、このコードは期待どおりに機能しないため、何をすればよいかわかりません。

答え:

提供されたコードの重大なエラーの 1 つは、$paymentDate に使用されている日付形式が間違っていることです。日付を効果的に比較するには、日付を一貫した形式 (通常は「YYYY-MM-DD」形式) に変換することが重要です。これを実現するには、strtotime() 関数を利用できます。

$paymentDate = date('Y-m-d');
$paymentDate = date('Y-m-d', strtotime($paymentDate));

さらに、今日の日付が範囲内にあることを確認するには、>=<🎜 を使用します。 > と > の代わりに 。これは、現在コードが範囲の最終日を除外しているためです。以下の修正されたコードは、今日の日付が契約日の間にあるかどうかを確認するために適切に機能するはずです。

$paymentDate = date('Y-m-d');
$paymentDate = date('Y-m-d', strtotime($paymentDate));
//echo $paymentDate; // echos today!
$contractDateBegin = date('Y-m-d', strtotime("01/01/2001"));
$contractDateEnd = date('Y-m-d', strtotime("01/01/2012"));

if (($paymentDate >= $contractDateBegin) && ($paymentDate <= $contractDateEnd)) {
    echo "is between";
} else {
    echo "NO GO!";
}
注:元のコードでは別の日付形式 (例: 「dd/mm/YYYY」) が使用されているため、必ず「YYYY-MM-DD」に変換してください。

strtotime() 関数は、正確な比較を保証します。

以上が私の PHP コードが今日の日付が日付範囲内にあるかどうかを正確にチェックしないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。