3

This give me every monday date in date range.

Question: How to get every monday and friday of week?

$start_date = date('Y-m-d');
$end_date = date('Y-m-d', strtotime($start_date . ' + 1 MONTH'));

for(
    $i = strtotime('Monday', strtotime($start_date)); 
    $i <= strtotime($end_date); 
    $i = strtotime('+1 WEEK', $i)
) {
    echo date('Y-m-d', $i). '<br>';
}

My Update:

$my_dates = [];
for(
    $i = strtotime($start_date); 
    $i <= strtotime($end_date); 
    $i = strtotime('+1 DAY', $i)
) {
    if(in_array(date('N', $i), array(1, 5))) {
        $my_dates[] = date('Y-m-d', $i);
    }
}

var_dump($my_dates);
LihO
  • 41,190
  • 11
  • 99
  • 167
Ing. Michal Hudak
  • 5,338
  • 11
  • 60
  • 91

2 Answers2

1

Have a look at library called When, it's "Date / Calendar recursion library for PHP 5.3+".

Let's say MF schedule for next month:

$now = new DateTime('NOW');
$till = clone $now;
$till->modify('+1 month');

$r = new When();
$r->startDate($now)
  ->freq("weekly")
  ->until($till)
  ->byday(array('MO', 'FR'))
  ->generateOccurrences();

$occurrences = $r->occurrences;
LihO
  • 41,190
  • 11
  • 99
  • 167
0

If I'm not wrong than you can simply use for loop like as

$start = "2015-09-01";
$end = date('Y-m-d',  strtotime("$start +1 months"));
$period = floor((strtotime($end) - strtotime($start))/(24*60*60));

for($i = 0; $i < $period; $i++){
    if(in_array(date('l',strtotime("$start +$i day")),["Monday","Friday"]))
        echo date('l d M, Y',strtotime("$start +$i day"))."\n";
}

Output:

Friday 04 Sep, 2015
Monday 07 Sep, 2015
Friday 11 Sep, 2015
Monday 14 Sep, 2015
Friday 18 Sep, 2015
Monday 21 Sep, 2015
Friday 25 Sep, 2015
Monday 28 Sep, 2015

Demo

Narendrasingh Sisodia
  • 21,247
  • 6
  • 47
  • 54