Дата и лето

У меня проблема с датами пересечения зимнего / летнего времени.. пожалуйста, посмотрите пример

        $pickUpDate = '2011-10-23';
        $dropOffDate = '2011-10-31';
        $pickUpTime = '09:00';
        $dropOffTime = '09:00';

        Zend_Date::setOptions(array('fix_dst' => false));
        Zend_Date::setOptions(array('fix_dst' => false));
        $pickUpDateTime = new Zend_Date ( $pickUpDate);
        $pickUpDateTime->setTime ( $pickUpTime );
        $dropOffDateTime = new Zend_Date ( $dropOffDate);
        $dropOffDateTime->setTime ( $dropOffTime );


        $dateDiff = ceil(($dropOffDateTime->getTimestamp ( ) - $pickUpDateTime->getTimestamp ( )) / (3600 * 24));
        echo $dateDiff;

Эхо выдает 9... Мой часовой пояс - Лондон, но я думал, что fix_dst должен исправить проблему с летним временем? Я также пытался установить часовой пояс в GMT и UTC, но имеет тот же эффект? есть идеи?

1 ответ

Временные метки не имеют информации о часовом поясе. Вы должны избегать их использования в этом случае.

Может быть, вам стоит попробовать метод Zend_Date::sub между вашими двумя датами. Это позаботится о DST.

Пожалуйста, также проверьте ваш часовой пояс, потому что из того, что я прочитал по ссылке выше:

Если ваш фактический часовой пояс в экземпляре Zend_Date установлен на UTC или GMT, опция 'fix_dst' не будет использоваться, поскольку эти два часовых пояса не работают с DST.

Другие вопросы по тегам