Die Übersetzung des Enddatums des PHP-DateTime-Vergleichs lautet:
P粉920835423
2023-07-31 15:48:47
<p>Ich versuche, eine Schaltfläche zu deaktivieren, indem ich die heutige Datumszeit mit einem Fälligkeitsdatum in der Datenbank vergleiche, aber ich habe ein Problem. Ich habe die Bedingung gemacht, aber sie funktioniert nicht bei einer 1-Tages-Frist, zum Beispiel: 31.07.2023 00:00:00 vs. 31.07.2023 00:00:00. <br /><br />Hier ist der Code, den ich ausprobiert habe: </p><p><br /></p>
<pre class="brush:php;toolbar:false;">// Variablen
// $request_project->start_date (enthält das Startdatum mit datetime-Datentyp, ebenfalls benutzerdefiniert)
// $request_project->end_date (enthält die Frist mit datetime-Datentyp, ebenfalls benutzerdefiniert)
$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>Ich möchte also vergleichen, ob das vom Benutzer definierte Fälligkeitsdatum kleiner oder gleich dem heutigen Datum ist. Wenn ja, ist die Schaltfläche aktiv und hat die Klasse „btn-primary“, andernfalls wird das Attribut „disabled“ hinzugefügt und „btn-primary“. wird in btn -secondary geändert. </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()">Jetzt bewerben <i class="uil uil-arrow-right"></i></a>
<?php } else { ?>
<a href="#" class="btn btn-secondary btn-hover w-100 mt-2 deaktiviert"
onclick="doSomething()">Jetzt bewerben <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> Lesezeichen hinzufügen</a></pre>
<p>Anstatt den else-Codeblock auszuführen, wird immer der if-Codeblock ausgeführt, auch wenn das end_date abgelaufen ist. </p>
你遇到的困境似乎与你如何比较结束日期和当前日期时间有关。问题在于你使用date()函数构建$endDateTime变量的方式。
在你的代码中,你使用'Y-m-d'作为date()的格式,这表示它只包含年、月和日,没有时间。然后,你将' 23-59-59'连接到日期上,导致了一个错误的日期时间格式。
为了解决这个问题,你应该修改$endDateTime变量,以正确的格式包含完整的时间(小时、分钟和秒),然后再进行比较。你可以使用格式为'Y-m-d H:i:s'的date()函数来实现,就像这样:
现在,$endDateTime将具有正确的格式,你的比较应该按预期工作。
以下是更新后的代码:
通过这个调整,代码现在应该能够在结束日期已过今天日期时正确地禁用按钮。