繁体   English   中英

比较两个日期之间的差异PHP

[英]Compare difference between two dates PHP

我正在尝试与日期进行比较以找出它们之间有多少时间,我知道该怎么做,date_diff(),但是我想然后比较两个日期之间的时间,如果时间大于7天,则执行一些操作,如果不做其他事情。 我认为这听起来很容易,而且我知道可能有相当简单的解决方案,但我只是不喜欢日期和比较。 这是我到目前为止得到的片段,因为它只是switch语句的一种情况,因此其余部分基本上是相同的。

$array = array();
$today = date("Y-m-d"); // get today's date

foreach($arrayOfObjs as $obj){
    if ($obj->get("renewalDate") >= $today){
        array_push($array, $obj->get("renewalDate"));
    }else{
        switch($obj->get("recurrencePeriod")){
            case 1:
       /*
       * All cases follow same structure
       * Build the date in format Y-m-d from renewalDate out of the obj.
       * Loop through the date while it's less than today.
       * After date is greater than today return date add to array
       */

       $date = DateTime::createFromFormat("Y-m-d", $obj->get('renewalDate'));
       while($date <= $today){
          $date->add(new DateInterval('P7D'));
        }
        $diff = date_diff($today, $date);
        if($diff->format('%a') <= 7){
          $obj->renewalDate($date);
          array_push($array, $obj);
        }
        break;

基本上,我的数据库存储日期,这些日期可以传递,但可能是重复发生的事件。 为了计算下次发生该事件,我检查数据库中的数据是否在今天的日期之前,如果是,那么我继续添加增量(在本例中为每周重复发生的事件7),然后再次比较日期。 在增加的日期经过今天的日期之后,我想找出它是否在7天内,如果是,则将其添加到数组中以返回。 我知道...因为我要添加7,并且在7天之内会发生第一次重复发生的事件就总是在7天之内,但是对于每月事件或更大的事件却不是这样。

所有情况都坏了,因此为了简单起见,我只包括了这一情况。 我可以让date_Diff返回类似7或12之类的数字,或者返回任何数字,但是如何检查该数字是否在我想要的7天内?

谢谢,如果需要澄清任何误解,我将提供更多信息。

我不确定您要做什么,但是如果您只是向前和向后预测日期,并且想知道它们是否都是7天或更长时间,那么接下来该怎么办:

$today = date("Y-m-d");
$todaytime = strtotime($today);

$testdate = "2017-06-31";
$testtime = strtotime($testdate);

$back7days = strtotime("-7 days",$todaytime);
if($testtime < $back7days)
    echo "X"; // do somthing if testdate was more than 7 days ago


$fwd7days = strtotime("+7 days", $todaytime);
if($testtime > $fwd7days)
    echo "Y"; // do somthing if testdate is more than 7 days in future  

只需确保使用小于或小于等于的比较器等即可处理所需的边界条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM