比较PHP

时间:2017-07-27 16:36:00

标签: php date compare

我试图比较日期以确定他们之间有多少时间,我知道怎么做,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天内?

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

1 个答案:

答案 0 :(得分:0)

我不完全确定你要做什么,但是如果你只是向前和向后投射日期并且想要知道它们是否是7天或更长时间,那么如何:

git fetch

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