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;">// Variables
// $request_project->start_date (contains the startdate with datetime data type also user defined)
// $request_project->end_date (contains the deadline with datetime data type also user defined)
$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()">Apply Now <i class="uil uil-arrow-right"></i></a>
<?php } else { ?>
<a href="#" class="btn btn-secondary btn-hover w-100 mt-2 disabled"
onclick="doSomething()">Apply Now <i class="uil uil-arrow-right">
</i></a>
<?php } ?>
<a href="#" class="btn btn-soft-warning btn-hover w-100 mt-2
bookmark" id="<?=$request_project->id?>"><i class="uil uil-bookmark">
</i> Add Bookmark</a></pre>
<p>與其執行else程式碼區塊,它總是執行if程式碼區塊,即使end_date已經過期。 </p>
你遇到的困境似乎與你如何比較結束日期和當前日期時間有關。問題在於你使用date()函數來建立$endDateTime變數的方式。
在你的程式碼中,你使用'Y-m-d'作為date()的格式,這表示它只包含年、月和日,沒有時間。然後,你將' 23-59-59'連接到日期上,導致了一個錯誤的日期時間格式。
為了解決這個問題,你應該修改$endDateTime變量,以正確的格式包含完整的時間(小時、分鐘和秒),然後再進行比較。你可以使用格式為'Y-m-d H:i:s'的date()函數來實現,就像這樣:
現在,$endDateTime將有正確的格式,你的比較應該如預期般運作。##
以下是更新後的程式碼:
透過這個調整,程式碼現在應該能夠在結束日期已過今天日期時正確地停用按鈕。#