首页 > 社区问答列表 >PHP DateTime比较结束日期的翻译是:

  PHP DateTime比较结束日期的翻译是:

我在尝试通过将今天的日期时间与数据库中的截止日期进行比较来使按钮禁用,但遇到了问题。我已经制定了条件,但在1天的截止日期上不起作用,例如:2023-07-31 00:00:00与2023-07-31 00:00:00。

以下是我尝试过的代码:


// 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');

所以我想要比较用户定义的截止日期是否小于等于今天的日期时间,如果是,按钮将处于激活状态并具有btn-primary类,否则将添加disabled属性并将btn-primary更改为btn-secondary。

<?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>

与其执行else代码块,它总是执行if代码块,即使end_date已经过期。

P粉920835423
P粉920835423

  • P粉720716934
  • P粉720716934   已被采纳   2023-08-01 10:25:25 1楼

    你遇到的困境似乎与你如何比较结束日期和当前日期时间有关。问题在于你使用date()函数构建$endDateTime变量的方式。

    在你的代码中,你使用'Y-m-d'作为date()的格式,这表示它只包含年、月和日,没有时间。然后,你将' 23-59-59'连接到日期上,导致了一个错误的日期时间格式。

    为了解决这个问题,你应该修改$endDateTime变量,以正确的格式包含完整的时间(小时、分钟和秒),然后再进行比较。你可以使用格式为'Y-m-d H:i:s'的date()函数来实现,就像这样:

    $endDateTime = date('Y-m-d 23:59:59');
    

    现在,$endDateTime将具有正确的格式,你的比较应该按预期工作。

    以下是更新后的代码:


    <?php
    $startDate = new DateTime($request_project->start_date);
    $endDate = new DateTime($request_project->end_date);
    $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');
    
    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>
    

    通过这个调整,代码现在应该能够在结束日期已过今天日期时正确地禁用按钮。

    +0 添加回复