如何从DateTime,纬度和经度获取时区(无外部API)?

时间:2016-02-27 14:52:08

标签: java datetime timezone utc

有一个很好的answer关于如何获得纬度和经度的TimeZone。 然而,答案中有一条评论

  

我注意到的一件事是缺少任何UTC时间戳要求   在确定时区时。例如,伦敦的长/拉特是   还不足以确定时区是GMT还是BST(英国   夏令时/夏令时)。所以一定要确定正确的   您需要lat,long和UTC时间戳的时区。

此外,还有一个wiki,它说Java拥有自己的Timezones数据库,这在Oracle website

中有记录。

我想知道给定UTC DatetimeLatitudeLongitude,是否有办法利用Java的时区数据库来获取时区而不是进行API调用?

任何资源/示例?

1 个答案:

答案 0 :(得分:2)

您引用的文章显示了几个脱机工作的库,包括一个用于Java的库。这些库在tz_world地图上查找纬度/经度,然后返回标准的IANA时区标识符,例如America/New_York

然后,使用Java库或标准Java将该标识符与任何时间戳进行转换。最好的方法是使用Joda-Time用于Java 7及更早版本,并使用新的java.time包用于Java 8 +。

没有一步实施,因为这是两个不同的问题。在某些情况下,您可能需要两种情况,但并非总是如此。