Find missing dates in range (php)

前端 未结 1 363
长情又很酷
长情又很酷 2021-01-27 17:03

I would like to identify the missing dates in a PHP array

for example

this range

2013-06-12
2013-06-13
2013-06-26
2013-06-27
2013-06-29


        
相关标签:
1条回答
  • 2021-01-27 17:52

    Here's a good way to get all missing dates in an array:

    <?php
    $myDates = array("2013-06-12", "2013-06-13", "2013-06-26", "2013-06-27", "2013-06-29");
    $missingDates = array();
    
    $dateStart = date_create("2013-06-01");
    $dateEnd   = date_create("2013-06-".date("t", mktime(0, 0, 0, 6, 1, 2013)));
    $interval  = new DateInterval('P1D');
    $period    = new DatePeriod($dateStart, $interval, $dateEnd);
    foreach($period as $day) {
      $formatted = $day->format("Y-m-d");
      if(!in_array($formatted, $myDates)) $missingDates[] = $formatted;
    }
    
    print_r($missingDates);
    ?>
    

    This will result in:

    Array
    (
        [0] => 2013-06-01
        [1] => 2013-06-02
        [2] => 2013-06-03
        [3] => 2013-06-04
        [4] => 2013-06-05
        [5] => 2013-06-06
        [6] => 2013-06-07
        [7] => 2013-06-08
        [8] => 2013-06-09
        [9] => 2013-06-10
        [10] => 2013-06-11
        [11] => 2013-06-14
        [12] => 2013-06-15
        [13] => 2013-06-16
        [14] => 2013-06-17
        [15] => 2013-06-18
        [16] => 2013-06-19
        [17] => 2013-06-20
        [18] => 2013-06-21
        [19] => 2013-06-22
        [20] => 2013-06-23
        [21] => 2013-06-24
        [22] => 2013-06-25
        [23] => 2013-06-28
        [24] => 2013-06-30
    )
    
    0 讨论(0)
提交回复
热议问题