Рассчитать время полета - PullRequest
       3

Рассчитать время полета

2 голосов
/ 17 февраля 2011

Сейчас я работаю над функцией расчета времени полета. У меня очень странная проблема, потому что это новый домен для меня.

Вот один пример:

Outward: 25.02.2011 11:45 Кельн - Лас-Вегас 26.02.2011 21: 18

Возврат: 18.03.2011 09:49 Лас-Вегас - Кельн 19.03.2011 11: 05

Для этого рейса Каяк показывает Выезд: 18:33 часов Возвращение: 17:16 часов

Кельн - GMT +01: 00 Лас-Вегас - часовой пояс Америки / Лос-Анджелеса -> -08: 00

Но в данном примере длительность полета для исходящего рейса рассчитывается со смещением -8 часов для Лас-Вегаса и для обратного рейса с -7 часами для Лас-Вегаса. Почему?

Здесь я вижу часовые пояса: http://download.geonames.org/export/dump/timeZones.txt

У кого-нибудь есть идеи?

Спасибо Nik

Ответы [ 2 ]

5 голосов
/ 17 февраля 2011

Это потому, что летнее время не начинается везде в один и тот же день.

Лас-Вегас: летнее время начинается в воскресенье, 13 марта 2011 года
Кельн: летнее времястартует в воскресенье, 27 марта 2011 года

Так как ваш обратный рейс 18 марта, Лас-Вегас будет в летнее время, а Кельн - не будет.

4 голосов
/ 17 февраля 2011

Хорошо, я решаю проблему.Спасибо за совет сначала преобразовать обе даты в UTC / GMT.

Вот хитрость:

$ reset_timezone = date_default_timezone_get ();

// преобразовать в первый разdate_default_timezone_set ($ timezone_identifier1);$ time1 = $ date_from. '»$ Time_from.$ gmtime1 = gmdate ('Ymd H: i', strtotime ($ time1));

// преобразовать второй раз date_default_timezone_set ($ timezone_identifier2);$ time2 = $ date_to. '»$ Time_to.$ gmtime2 = gmdate ('Ymd H: i', strtotime ($ time2));

// снова сбросить часовой пояс date_default_timezone_set ($ reset_timezone);

-> здесь вычислить разницу<- </p>

Надеюсь, это кому-нибудь еще поможет!

Приветствия, Ник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...