【问题标题】:Check the date between two dates检查两个日期之间的日期
【发布时间】:2018-02-22 17:25:48
【问题描述】:

我必须检查接收日期是否在今天之前的 3 到 6 个月之间。如果超出此范围,则必须执行某些代码。

下面是代码

<?php

$date1 = '22-10-2017';
$date2 = date('d-m-Y' , strtotime('-3 months'));
$date3 = date('d-m-Y' , strtotime('-6 months'));
if((strtotime($date1) < strtotime($date2)) || (strtotime($date1) > strtotime($date3))){
    echo "Inside Range";
}else echo "Out of Range";

?>

例如如果

  1. 接收日期为 2018 年 2 月 20 日 - 超出范围。
  2. 接收日期为 20-10-2017 - 范围内。
  3. 接收日期为 2017 年 8 月 20 日 - 超出范围。

【问题讨论】:

  • 您想检查传入日期是否大于今天的 3 个月,但您没有返回今天日期的变量
  • @Tarasovych 为什么有必要这样做?
  • 问题中的代码是否有效?为什么不?怎么了?有什么错误吗?
  • @mike :不,它总是超出范围,
  • @Mike 我想如果你想将一个变量与另一个变量进行比较,你必须初始化两者,不是吗?

标签: php date strtotime date-difference


【解决方案1】:

您正在检查||,您需要使用&amp;&amp;,因为您需要日期BETWEEN

$date1 = '20-08-2017';
$date2 = date('d-m-Y' , strtotime('-3 months'));
$date3 = date('d-m-Y' , strtotime('-6 months'));
if((strtotime($date1) <= strtotime($date2)) && (strtotime($date1) >= strtotime($date3))){
    echo "Inside Range";
}else { 
   echo "Out of Range";
}

说明: 需要将您的条件从if((strtotime($date1) &lt; strtotime($date2)) || (strtotime($date1) &gt; strtotime($date3))) 更改为if((strtotime($date1) &lt;= strtotime($date2)) &amp;&amp; (strtotime($date1) &gt;= strtotime($date3))){

如果您使用 DateTime 对象,这也容易得多:

$date1 = new DateTime('20-08-2017');
$date2 = new DateTime('-3 months');
$date3 = new DateTime('-6 months');

if($date1 < $date2 && $date1 > $date3) {
    echo "Inside Range";
} else {
    echo "Out of Range";
}

【讨论】:

  • 最好将else 放在大括号中。我知道 OP 没有,但他们应该而且应该更正。
  • 如果您使用的是 DateTime 对象,这也容易得多。介意我劫持你的答案来添加它吗?
  • 不客气@Mike,我只是试图用他自己的代码解决 hemanth 的问题......但总是欢迎提供最好的方法
  • 添加它会很好;只希望答案不会被覆盖。
  • @FunkFortyNiner 我不会那样做... :)
【解决方案2】:

你可以这样做:

$today=date_create(date("Y-m-d"));
$date=date_create("2018-06-12");
$diff=date_diff($today,$date)->format("%a");

if ($diff > 90 && $diff < 180) {
    echo "Inside range";
}
else {
    echo "Out of range";
}

【讨论】:

猜你喜欢
  • 2013-10-04
  • 1970-01-01
  • 2019-08-05
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
相关资源
最近更新 更多