我现在正在使用一个函数来计算飞行时间。我有一个非常奇怪的问题,因为它对我来说是一个新领域。
以下是一个例子:
对外: 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
答案 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