У меня есть PHP-скрипт, который извлекает из RSS-канала и создает серию выходных данных на основе событий. Сценарий работал нормально до прошлой недели, когда изменилось летнее время.
Скрипт работает с RSS-каналом, дата которого имеет следующую структуру:
pubDate: Чт, 04 апреля 2013 г., 19:05:00 GMT
Мне нужно было создавать разные php-скрипты для каждого дня и времени, поэтому я использовал следующее:
$expiry = $item->pubDate;
$expiryLenght = strlen("$expiry");
$timeStart = $expiryLenght - 12;
$time = substr("$expiry","$timeStart", 5);
$hour = substr("$time",0, 2);
$day_alpha = substr("$expiry",0, 3);
$day = substr("$expiry",5, 2);
$month = substr("$expiry",8, 3);
$year = substr("$expiry", 12, 4);
$month = strtolower($month);
$month_num = monthNum($month);
Для меня важной частью является строка «$hour». Мне нужно попытаться настроить это на летнее время. pubDate всегда указывается по Гринвичу без поправок.
Я думал о том, чтобы пойти по пути определения периода перехода на летнее время, и если он находится в пределах временных рамок, добавить 1 к часу. Однако я не уверен, что это хорошее решение.
Любая помощь будет принята с благодарностью, Дэйв.
После большой помощи от комментариев я закончил тем, что использовал это
$expiry1 = $item->pubDate;
$expiry = date('D, d M Y H:i:s \off', strtotime($expiry1 . "Европа/Дублин"));
Немного хакерской работы, но она вернула Expiry в прежний формат, а это означало, что остальная часть кода могла работать с ним.