【发布时间】:2011-07-25 20:46:45
【问题描述】:
我需要能够计算两个数据/时间值之间的差异,这些数据/时间值代表(可能)两个不同地理位置的瞬间。
我拥有的每个输入值都是以下的元组:
- 没有时区偏移的日期/时间值,例如
6:54 AM, 12/3/2005。 - 描述特定时间位置的纬度/经度值(例如,
-33.8704, 151.1938)。
根据两个输入值的任意组合,我需要计算时间差(可能是分钟、天、年等)。首先,我需要:
- 标准化每个输入值到其相关的 GMT(或祖鲁)时间。我想这可以通过将纬度/经度值转换为时区来完成。获得相关时区后,我需要根据指定日期考虑夏令时差异,以确定准确的时间。
- 时间值标准化后,计算差异就很简单了。
谁能建议我怎么做:
- 将经纬度对转换为时区,以及
- 确定给定时区和日期的夏令时偏移量。
我想我需要一些函数用于 (1) 和一个值数据库用于 (2),但我不知道在哪里可以获得这些,或者是否它们是免费的。
其他限制:
- 我想要使用 Java 或 .Net 编写的软件(因为我的软件应用程序可以使用任何一种编写的插件),并且
- 我真的希望所有处理都是本地。我知道有几个 Web 服务可以计算纬度/经度对的时区(如 this Stackoverflow question 上所讨论的,例如 Geonames.org 或 DRTEngine),但考虑到我拥有的数据量,我不想要我拥有的每个数据点都依赖或使用第三方网络服务,因此我更喜欢“免费”软件并在本地访问所有正确的信息。
更新:感谢所有提供答案的人。我目前正在尝试通过使用GeoNames data 并执行最近邻计算来确定从纬度/经度的时区来解决这个问题,并将专注于使用 Joda Time 和相关的最新tz database 来计算夏令时偏移特定日期。
【问题讨论】:
-
这是一个相当大的假设,即纬度/经度对应于特定时区 - 如果有人前往不同的国家/地区但将设备/计算机设置为本国时区怎么办?
-
@Damien_The_Unbeliever:我没有做任何假设。我在这里关注的数据是由在固定传感器上运行的软件生成的,这些传感器在本地时间记录观察结果。我只关心这些数据与其他数据的集成,这些数据具有来自其他来源的正确时区信息。
标签: java .net timezone geocoding