Java 将Joda时间与IATA时区一起使用

Java 将Joda时间与IATA时区一起使用,java,timezone,jodatime,dst,Java,Timezone,Jodatime,Dst,Innovata发布航空业数据。 这些文件包含机场代码、UTC偏移的开始/停止日期、UTC偏移和机场的经度/纬度。 将UTC偏移量转换为或的最佳做法是什么?您是否考虑过将UTC偏移量转换为日期时区?已在注释中添加,但 我认为,通过解析文件并创建DateTimeZone实例是最简单的方法。如果您不想传递这些区域,您也可以潜在地实施。您有关于这些文件格式的更多信息吗?@Jon Skeet:我认为可以从Innovata获得示例文件。它们是文本文件,带有UTC偏移量、IATA时区代码(国家代码+数字/字

Innovata发布航空业数据。
这些文件包含机场代码、UTC偏移的开始/停止日期、UTC偏移和机场的经度/纬度。


将UTC偏移量转换为或的最佳做法是什么?

您是否考虑过将UTC偏移量转换为日期时区?

已在注释中添加,但


我认为,通过解析文件并创建
DateTimeZone
实例是最简单的方法。如果您不想传递这些区域,您也可以潜在地实施。

您有关于这些文件格式的更多信息吗?@Jon Skeet:我认为可以从Innovata获得示例文件。它们是文本文件,带有UTC偏移量、IATA时区代码(国家代码+数字/字母)、纬度/经度。(邮寄info@innovata-llc.com),但可能还有变更日期。。。您能轻松使用DateTimeZoneBuilder吗?(你以前知道吗?)?特别是,您需要只使用if进行计算,还是也需要为它输出一个名称?此外,输入包括“UTC偏移的开始/停止日期”-这是否意味着给定机场的多条记录,计划中每个DST/ST年部分一条?使用工厂方法计算偏移分钟数?我不确定Joda补偿是否包括DST?是的,是的。因此,您需要根据开始/停止日期选择正确的记录。然后,因为它没有规则,DateTimeZone就是它——实际上没有DST/无DST的概念;偏移量是固定的。或者,按开始顺序对机场的所有记录进行排序,并将其与DateTimeZoneBuilder一起使用。DateTimeZoneBuilder可以完成这项工作,但要将IATA时区代码映射到DateTimeZone代码需要做很多工作。@Kb:真的吗?如果IATA文件提供ID、偏移量和更改日期/时间,我看不出这会有多大的工作量。ID不是Olson db/TZ数据库ID。偏移量/日期/TME是给定的。工作是将olson db样式ID映射到IATA样式ID(),或者我只是懒惰而已。;)@Kb:这根本不是你想要的——你想要的是一种将IATA时区转换为DateTimeZone或Olsen格式的方法。我提出的是一种通过DateTimeZoneBuilder将IATA时区数据转换为DateTimeZone的简单方法。Joda Time不需要ID是有效的Olsen ID。如果您只需要对时区进行算术运算,为什么不使用DateTimeZoneBuilder,构建一个DateTimeZone,然后使用它呢?是的,您是对的,您的答案最接近解决方案。我现在要做的就是开始映射ID,或者是的,在Joda中使用IATA ID!;))