簡體   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