дата и лето - PullRequest
       30

дата и лето

1 голос
/ 29 мая 2011

У меня проблема с датами, пересекающими зимнее / летнее время .. см. Пример

        $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 Ответ

0 голосов
/ 30 мая 2011

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

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

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

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

...