7

我不确定它是否真的与 Android 有关,但由于我打算将它用于 Android 应用程序,所以我也标记了 Android。

如果给出经纬度,我正在尝试建立一些逻辑来计算日出时间。

我试过跟随,但一切都给出了我提供的位置(印度班加罗尔)的日出时间略有不同,当我用关键字搜索谷歌时,谷Bangalore Sunrise歌在卡片中给出了不同的结果,看起来更多准确的:

都给出不同的结果,但谷歌的看起来仍然更准确。

这里有人知道API或更好的计算吗?或者谷歌用于他们卡片的算法/网络服务?

任何帮助深表感谢。

4

3 回答 3

3

印度标准时间是 UTC+05:30,这可能就是您看到 30 分钟差异的原因。

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

localTime = utcTime + 1_hour * longitude / 15_degree

班洛尔市是 5 小时。

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

于 2013-04-09T17:01:28.357 回答
2

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

  • 包括或不包括大气折射(即“真实”或“表观”海拔)
  • 太阳破地平线的“顶部”或“中心”

当然还有其他因素,随着纬度离赤道越来越远,这个问题变得越来越模糊。但仅这些因素就可以解释几分钟的差异。

于 2013-04-09T11:50:58.633 回答
1

快速搜索将我带到这个 api

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

于 2013-04-09T11:40:32.367 回答