Хорошо, поэтому у меня есть этот код, который составляет список дат:
$dates = array(); for($i = 1; $i < 10; $i++) { $datetime = mktime(12, 0, 0, date('n'), date('j') + $i, date('Y')); if(date('N', $datetime) != 6 && date('N', $datetime) != 7) { $dates[date('l, F jS', $datetime)] = date('l, F jS', $datetime); } }
Даты будут завтра и до тех пор, пока они не будут в субботу или воскресенье.
Теперь проблема «завтра» меняется с 8:00 вечера по восточному стандартному времени.
Чтобы объяснить, скажем, что это среда. Первый вариант в списке должен быть в четверг. Однако, как только это будет 8:00 вечера EST, тогда первый вариант – пятница. Вместо того, чтобы меняться в 8:00 вечера EST, я бы хотел, чтобы он изменился в 3:00 по восточному стандартному времени (так что в четверг, 2:00, он должен по-прежнему предлагать в четверг выбор)
Я думаю, что вы теряете свои часовые пояса в настоящее время. 8PM EDT = Midnight UTC.
Во всяком случае, в PHP 5.3:
$one_day = new DateInterval('P1D'); $tz = new DateTimeZone('America/New_York'); $start = new DateTime('now', $tz); if ($start->format('G') >= 3) $start->add($one_day); foreach (new DatePeriod($start, $one_day, 10) as $date) { if ($date->format('N') < 6) echo $date->format('l, F jS')."\n"; }
Логика остается прежней, если вы находитесь на <5.3, просто нужно делать что-то с другими функциями, такими как strtotime()
, date()
и т. Д .:
$one_day = 86400; date_default_timezone_set('America/New_York'); $start = time(); if (date('G', $start) >= 3) $start += $one_day; for ($i = 0, $date = $start; $i < 10; ++$i, $date += $one_day) { if (date('N', $date) < 6) echo date('l, F jS', $date)."\n"; }
Я думаю, что это должно сработать.