我正在尝试编写一个世界时钟应用程序,它返回给定时区的日出和日落信息。我们的想法是用户将指定GMT偏移量或明确给出时区。然后,应用程序将使用找到的java.util.TimeZone(或可能给出GMT偏移量)查找纬度和经度。我意识到时区通常不是获取地理定位信息的非常准确的方式,因为它们大多数是基于政治边界,但似乎存在这样的事情。我发现的大多数网站/ apis都会给出纬度和经度的时区,但我想进行反向搜索(返回给定时区的纬度和经度)。在此先感谢您的帮助。
答案 0 :(得分:2)
让我向您展示如果您对我的祖国新西兰这样做的错误程度,新西兰位于一个时区(远程岛屿除外),但是在很多纬度范围内延伸:
Invercargill, New Zealand
Time zone: NZST
Sunrise today: 7:05 am
Auckland, New Zealand
Time zone: NZST
Sunrise today: 6:34 am
预计中国(整个国家是一个时区),智利,阿根廷和其他国家也存在类似问题。
好主意,但可能不可行。
答案 1 :(得分:1)
Geonames.org有一个可下载的城镇数据库,其中包括各种信息,包括时区和人口。您可以使用它来填充从时区映射到该时区中最大城市位置的数据库。
请注意,GMT偏移对于此目的来说非常无用,但幸运的是,时区ID的大陆/城市术语使用户可以非常轻松地选择正确的。
答案 2 :(得分:0)
时区是一个区域,所以你必须返回这个区域边界的坐标(并且可能添加一些方法来检查给定点在里面)。所以你必须从地理数据开始。请记住,很多国家都有夏令时,因此时区不是一成不变的。
答案 3 :(得分:0)
在阅读了所有人的回答后,我想我可能会使用Google's Geocoding API,它会返回给定物理地址的纬度/经度和时区。我只需要添加一个界面,让用户输入地址,城市或邮政编码,以便从api中检索信息并计算日出/日落时间。这比尝试将所有这些信息本地存储在数据库(这将是巨大的)中更好。感谢所有回答的人。