Intereting Posts
Загрузить ajaxdata в формате HTML или JSON? Yii Ошибка 400 Тонер CSRF не может быть проверен при попытке удалить сообщение Завершить набор результатов перед вставкой данных в БД Высокая частота Ajax и перегрузка сна MySQL Есть ли открытый код для создания «предварительного просмотра ссылок» и значков, например, в facebook? Принудительное wordpress для подключения к базе данных через TCP Предупреждение PHP: array_shift () ожидает, что параметр 1 будет массивом, null указан в /home5/…/php/symfony/command/sfCommandManager.class.php Функция Php, чтобы определить, состоит ли строка из только буквенно-цифровых символов? Selenium: Как выбрать опцию из меню выбора? 401 перенаправляет магически приводит к перенаправлению 302 Как формируется запрос PHP 5.3 SOAP? Как создать кросс-запрос базы данных в PHP? как я могу получить все опции в нескольких вариантах, используя PHP? Пакетный скрипт для замены коротких открытых тегов PHP <? Php Вставка кодированной строки UTF-8 в кодированную таблицу mysql с кодировкой UTF-8 с «Неверным строковым значением»

php – настройка для часовых поясов

Хорошо, поэтому у меня есть этот код, который составляет список дат:

$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"; } 

Я думаю, что это должно сработать.