PHP DateTime 比較終了日の変換は次のとおりです。
P粉920835423
2023-07-31 15:48:47
<p>今日の日時をデータベース内の期限と比較してボタンを無効にしようとしていますが、問題が発生します。条件を作成しましたが、期限が 1 日の場合は機能しません。たとえば、2023-07-31 00:00:00 と 2023-07-31 00:00:00 です。 <br /><br />試したコードは次のとおりです: </p><p><br /></p>
<pre class="brush:php;toolbar:false;">// 変数
// $request_project->start_date (日時データ型の開始日もユーザー定義で含まれます)
// $request_project->end_date (日時データ型の期限もユーザー定義で含まれます)
$startDate = new DateTime($request_project->start_date); //
$endDate = new DateTime($request_project->end_date);
$startDateTime = date('Y-m-d') . ' 00-00-00';
$endDateTime = date('Y-m-d') . ' 23-59-59';
$startDateString = $startDate->format('Y-m-d H:i:s');
$endDateString = $endDate->format('Y-m-d H:i:s');</pre>
<p>そこで、ユーザー定義の期限が今日の日時以下かどうかを比較したいと思います。そうであれば、ボタンはアクティブになり、btn-primary クラスを持ちます。それ以外の場合は、disabled 属性が追加され、btn-primary になります。 btn -secondary に変更されます。 </p>
<pre class="brush:php;toolbar:false;"><?php if($endDateString <= $endDateTime) {?>
<a href="#" class="btn btn-primary btn-hover w-100 mt-2"
onclick="doSomething()">今すぐ申し込む <i class="uil uil-arrow-right"></i></a>
<?php } else { ?>
<a href="#" class="btn btn-secondary btn-hover w-100 mt-2 無効"
onclick="doSomething()">今すぐ申し込む <i class="uil uil-arrow-right">
</i></a>
<?php } ?>
<a href="#" class="btn btn-soft-warning btn-hover w-100 mt-2
ブックマーク" id="<?=$request_project->id?>"><i class="uil uil-bookmark">
</i> ブックマークを追加</a></pre>
<p>end_date が期限切れになっている場合でも、else コード ブロックを実行する代わりに、常に if コード ブロックを実行します。 </p>
あなたが抱えているジレンマは、終了日と現在の日時をどのように比較するかに関係しているようです。問題は、date() 関数を使用して $endDateTime 変数を構築する方法にあります。
コードでは、date() の形式として「Y-m-d」を使用しています。これは、年、月、日のみが含まれ、時間が含まれていないことを意味します。次に、「23-59-59」を日付に連結したため、間違った日時形式が発生しました。
この問題を解決するには、比較する前に $endDateTime 変数を変更して、完全な時刻 (時、分、秒) を正しい形式で含める必要があります。これは、次のように、「Y-m-d H:i:s」形式で date() 関数を使用して行うことができます。
リーリーこれで、$endDateTime の形式は正しくなり、比較は期待どおりに機能するはずです。
次は更新されたコードです:
リーリーこの調整により、終了日が今日の日付を過ぎた場合、コードはボタンを正しく無効にするようになりました。