Класс DatePeriod
хранит дату начала, дату окончания и интервал (или, что то же самое, дату начала, интервал и количество повторений).Это Traversable
, и при повторении в цикле foreach
он выдаст все даты (DateTime
объекты) от начала до конца, с заданным интервалом, разделяющим их.
Следовательно,Итерация класса DatePeriod
- это то же самое, что итерация массива, состоящего из всех дат, которые были бы получены с помощью DatePeriod
.
Так что мы можем написать:
//...
$tz1 = new DateTimezone($from_timezone);
$datetime1 = new DateTime("2010-08-01 $from_timebegin", $tz1);
$datetime2 = new DateTime("2010-08-01 $from_timeend", $tz1);
$indiaAvail = array(
array($datetime1, $datetime2),
);
$tz2 = new DateTimezone($to_timezone);
//convert periods:
$times = array_map(
function (array $p) use ($tz2) {
$res = array();
foreach ($p as $d) {
$res[] = $d->setTimezone($tz2);
}
return $res;
},
$indiaAvail
);
//...