【问题标题】:Comparing date values using if statement in php在php中使用if语句比较日期值
【发布时间】:2017-03-19 13:21:03
【问题描述】:

我想比较两个日期值,如果满足条件,让它显示一个特定的值。我使用了下面的代码,但它不起作用。看起来我没有很好地比较日期。

我想要实现的是这个。如果 date1 超过 3 个月或 date2 超过 6 个月,让它显示一些东西,但如果它不让它显示另一个。

我在这里使用 if 语句。

<?php

$levcon = $row_rsRecord['level'];
$semcon = $row_rsCourse['semester'];
$d = $row_rsCourse['date'];
$dae = strtotime($row_rsCourse['date']);
$dae1 = date("Y-m-d", strtotime("+3 months", $dae));
$daet = strtotime($row_rsCourse['date']);
$daet1 = date("Y-m-d", strtotime("+6 months", $daet));

if(($semcon == 1) && ($dae1 < $d) || ($semcon == 2) && ($daet1 < $d) ) { ?>
<a href="printout.php">
    <span class="fa-stack fa-4x">
        <i class="fa fa-circle fa-stack-2x text-danger"></i>
        <i class="fa fa-suitcase fa-stack-1x fa-inverse"></i>
    </span>
</a>

<?php } else { ?>

<a href="coursereg.php">
    <span class="fa-stack fa-4x">
        <i class="fa fa-circle fa-stack-2x text-danger"></i>
        <i class="fa fa-suitcase fa-stack-1x fa-inverse"></i>
    </span>
</a>

<?php } ?>

【问题讨论】:

  • 您的分组条款是无意义的;我想你的意思是前两组和两组也分组,所以中间的||在逻辑上与其他条件不冲突?
  • 什么是$row_rsCourse['date']?另外,您能否解释一下如果 date1 超过 3 个月或 date2 超过 6 个月,即如果 date1 超过 3 个月,您的意思是什么?

标签: php html date


【解决方案1】:

我无法解决整个问题,因为我发现 dae、dae1、daet 和 daet1 相当混乱,而且我不知道 $row_rsCourse['date'] 包含什么?

我已经尝试过清理一下。

  1. 将一些变量重命名为更能描述它们的含义。

  2. $dae 和 $daet 是相同的,所以我删除了其中一个,并将剩余的一个重命名为 dateUnix,因为它是 $row_rsCourse['date'] 中任何内容的 unix 时间表示。

  3. 我将 if 语句的两个子句合并成一个块,使用 echo 打印中间的 HTML。

  4. 如果它只需要检查它是否大于 6 并做其他事情,那么最好只检查大于 6 并让 else 子句处理其他情况。现在我将这两个条件分为 if 和 elseif,假设如果两者都为 false,则什么都不做。

  5. operator precedence 大于 &&、||和 ==,因此 if 语句中的某些括号不需要存在。

<?php 
$levcon = $row_rsRecord['level'];
$semcon = $row_rsCourse['semester'];
$date = $row_rsCourse['date'];
$dateUnix = strtotime($date);
$threeMonths = date("Y-m-d", strtotime("+3 months", $dateUnix));
$sixMonths = date("Y-m-d", strtotime("+6 months", $dateUnix));

if ($semcon == 1 && $sixMonths < $date) {
  echo '<a href="printout.php"><span class="fa-stack fa-4x">
      <i class="fa fa-circle fa-stack-2x text-danger"></i>
      <i class="fa fa-suitcase fa-stack-1x fa-inverse"></i>
  </span></a>';
}
elseif ($semcon == 2 && $threeMonths < $date) {
  echo '<a href="coursereg.php"><span class="fa-stack fa-4x">
    <i class="fa fa-circle fa-stack-2x text-danger"></i>
    <i class="fa fa-suitcase fa-stack-1x fa-inverse"></i>
  </span></a>';
}
?>

我没有这样做,因为我不完全了解您的问题/变量,但您应该在所有这些日期调用 strtotime 作为比较它们之前的最后一步。

【讨论】:

    猜你喜欢
    • 2019-02-16
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多