计算飞行时间

时间:2011-02-17 11:48:39

标签: timezone

我现在正在使用一个函数来计算飞行时间。我有一个非常奇怪的问题,因为它对我来说是一个新领域。

以下是一个例子:

对外: 25.02.2011 11:45科隆 - 拉斯维加斯26.02.2011 21:18

返回: 18.03.2011 09:49拉斯维加斯 - 科隆19.03.2011 11:05

Kayak正在准备此航班 外出:18:33小时 回程:17:16小时

科隆是GMT +01:00 拉斯维加斯是America / Los_Angeles时区 - > -08:00

但是在这个例子中,向外飞行的飞行durariion计算为拉斯维加斯为-8小时的偏移量和拉斯维加斯为-7小时的返回航班。为什么呢?

我在这里看到了时区:http://download.geonames.org/export/dump/timeZones.txt

有人有任何想法吗?

由于 NIK

2 个答案:

答案 0 :(得分:5)

这是因为夏令时不会在同一天的任何地方开始。

Las Vegas: DST starts on Sunday, 13 March 2011
Cologne: DST starts on Sunday, 27 March 2011

因此,由于您的回程航班是在3月18日,拉斯维加斯将在DST,但科隆不会。

答案 1 :(得分:4)

好的,我解决了这个问题。感谢您建议首先将这两个日期转换为UTC / GMT。

这是诀窍:

$ reset_timezone = date_default_timezone_get();

//第一次转换 date_default_timezone_set($ timezone_identifier1); $ time1 = $ date_from。' ” $ time_from。 $ gmtime1 = gmdate('Y-m-d H:i',strtotime($ time1));

//第二次转换 date_default_timezone_set($ timezone_identifier2); $ time2 = $ date_to。' ” $ time_to。 $ gmtime2 = gmdate('Y-m-d H:i',strtotime($ time2));

//再次重置时区 date_default_timezone_set($ reset_timezone);

- >这里计算差值< -

希望它可以帮助其他人!

干杯 NIK