calculate sundays between two dates

前端 未结 3 1625
渐次进展
渐次进展 2020-12-03 09:01

I want to calculate all Sunday\'s between given two dates. I tried following code. It works fine if days are less but if i enter more days. It keeps processing and Maximum e

3条回答
  •  悲&欢浪女
    2020-12-03 10:01

    Here is a solution if you want the Sundays in a specific date range.

    function dateRange($begin, $end, $interval = null)
    {
      $begin = new DateTime($begin);
      $end = new DateTime($end);
    
      $end = $end->modify('+1 day');
      $interval = new DateInterval($interval ? $interval : 'P1D');
    
      return iterator_to_array(new DatePeriod($begin, $interval, $end));
    }
    
    /* define date range */
    $dates = dateRange('2018-03-01', '2018-03-31');
    
    /* define weekdays */
    $weekends = array_filter($dates, function ($date) {
      $day = $date->format("N");
      return $day === '6' || $day === '7';
    });
    
    /* weekdays output */
    foreach ($weekends as $date) {
      echo $date->format("D Y-m-d") . "
    "; } /* define sundays */ $sundays = array_filter($dates, function ($date) { return $date->format("N") === '7'; }); /* sundays output */ foreach ($sundays as $date) { echo $date->format("D Y-m-d") . "
    "; } /* define mondays */ $mondays = array_filter($dates, function ($date) { return $date->format("N") === '1'; }); /* mondays output */ foreach ($mondays as $date) { echo $date->format("D Y-m-d") . "
    "; }

    Just change the number for any days you want in your output:

    Monday = 1
    Tuesday = 2
    Wednesday = 3
    Thursday = 4
    Friday = 5
    Saturday = 6
    Sunday = 7
    

提交回复
热议问题