<?php
$start = new DateTime('2017-05-23');
$end = new DateTime('2017-06-21');
$dates = every_two_weeks($start, $end, ['tue', 'wed', 'sat']);
foreach ($dates as $date) {
echo $date->format('Y-m-d D').PHP_EOL;
}
function every_two_weeks($start, $end, $days)
{
$dates = [];
$mon = new DateTime('mon this week '.$start->format('Y-m-d'));
while ($mon <= $end) {
$of = 'this week '.$mon->format('Y-m-d');
foreach ($days as $day) {
$date = new DateTime("$day $of");
if ($date < $start) {
continue;
}
if ($date > $end) {
break 2;
}
$dates[] = $date;
}
$mon->add(new DateInterval('P2W'));
}
return $dates;
}
- Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.30, 8.2.0 - 8.2.24, 8.3.0 - 8.3.12
- 2017-05-23 Tue
2017-05-24 Wed
2017-05-27 Sat
2017-06-06 Tue
2017-06-07 Wed
2017-06-10 Sat
2017-06-20 Tue
2017-06-21 Wed
preferences:
76.79 ms | 408 KiB | 5 Q