日出时间计算与Google的结果不符

时间:2013-04-09 11:24:40

标签: java android algorithm

我不确定它是否真的与Android有关,但由于我将其用于Android应用程序,我也在标记Android。

如果给出lat-long,我正在尝试构建一些逻辑来计算日出时间。

我已经尝试过关注,但是我提供的所有位置(印度班加罗尔)的日出时间都略有不同,当我使用关键字Bangalore Sunrise搜索谷歌时Google会给出一个卡片中的不同结果看起来更准确:

所有人都给出了不同的结果,而Google的表现仍然更加准确。

这里有人知道API或更好的计算方法吗?或谷歌正在使用的算法/网络服务?

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

印度标准时间是UTC + 05:30,这可能就是为什么你会看到30分钟的差异。

算法可以用UTC计算日出时间,但是它无法将UTC转换为本地时间,这需要复杂的时区知识。该算法可能会做一些非常简单的事情,比如

localTime = utcTime + 1_hour * longitude / 15_degree

这是Banglore市的5小时。

您应该使用UTC时间,然后使用Java日期API将其转换为本地时间。

答案 1 :(得分:1)

快速搜索引导我到这个api

http://www.earthtools.org/webservices.htm#sun

答案 2 :(得分:1)

我没有研究过你给出的所有链接,但很可能这些差异源于不同的假设和定义。特别是,以下因素往往因算法而异:

  • 包括或不包括大气折射(即“真实”或“明显”升高)
  • 太阳突破地平线的“顶部”或“中心”

当然还有其他因素,随着纬度越来越远离赤道,问题变得越来越不明确。但这些因素本身就可以解释差异。