我需要能够计算两个数据/时间值之间的差异,这两个数据/时间值代表(可能)两个不同地理位置的时刻。
我拥有的每个输入值都是以下元组:
6:54 AM, 12/3/2005
。-33.8704, 151.1938
)。从两个输入值的任意组合,我需要计算时差(可能是分钟,天,年等)。首先,我需要:
任何人都可以建议我如何:
我想我需要(1)的某些功能和(2)的值数据库,但我不知道在哪里可以得到这些,或者如果他们是免费提供的。
其他限制:
更新:感谢所有提供答案的人。我目前正在尝试通过使用GeoNames data并执行最近邻居计算来确定lat / long的时区来解决此问题,并将重点关注使用Joda Time和相关的最新tz database计算特定日期的夏令时抵消额。
答案 0 :(得分:2)
一旦你有了一个时区,就不需要自己进行DST检查 - Java TimeZone
,Joda Time DateTimeZone
和.NET TimeZoneInfo
类将需要照顾你。
(如果你使用的是Java,我强烈建议使用Joda Time而不是内置的日历类。)
我不知道有任何库将lat / long转换为时区,我担心。我确信必须有一些可用的东西,但我不知道它。请注意,任何此类库可能为您提供zoneinfo样式名称(例如“Europe / London”),其中不是 .NET TimeZoneInfo
类不幸的是,使用。如果Noda Time已经准备就绪,我建议使用它而不是.NET,但我们还没有完成它:(
答案 1 :(得分:1)
只是一个愚蠢的问题......你确定你的时间戳不是GMT / Z / UTC。如果这些数据来自单一来源,甚至是多个类似的来源,这似乎更合乎逻辑。如果是这样,你的问题就会消失。
如果数据来自静态站点(即气象站)的集合,那么您可以使用其中一个建议的Web服务来查找时区,然后在本地缓存结果。不可否认,夏令时可能会导致问题,因为时区会根据日期而变化。