PHP date_sunrise 和 date_sun_info 给出不同的结果

eup*_*ria 5 php date-sunrise

我有一个网络摄像头网站,我想显示实际一天的日出时间。因此我使用 PHP 中的 date_sunrise 函数来实现此目的。除了坐标之外,它还接受太阳天顶值作为输入。

我了解到日出的正确天顶是 90.8333。90 度是与太阳中心(即地平线)的理论角度。为了考虑太阳的直径和折射,添加了 0.8333(16 角分 + 34 角分除以 60)。

但我注意到这个输入给出的日出时间与其他网站不同。最可靠的来源一定是美国海军天文台天文应用部。查看他们的在线计算器并阅读他们的方法的描述。据说他们还使用天顶值 90.8333 来计算日出。

然后我发现php函数date_sun_info是一个包含各种数据的数组,给出了正确的日出时间(对应于AAD的结果)。

为了从 date_sunrise 函数获得相同的日出时间,我必须输入 90.5 左右的天顶值。

为什么 zenith=90.8333 的 date_sunrise 不会给出与 date_sun_info 相同的结果?

Dan*_*an_ 4

根据http://php.net/manual/en/function.date-sunrise.php,默认的 Zenith 参数取自配置文件(请参阅 ini_get())

有问题的 .ini 是 PHP 安装中的 php.ini。它具有以下几行(它们在此处被注释掉,但除非在 .ini 文件中被覆盖,否则将用作默认值)。

; http://php.net/date.sunrise-zenith
;date.sunrise_zenith = 90.583333

; http://php.net/date.sunset-zenith
;date.sunset_zenith = 90.583333
Run Code Online (Sandbox Code Playgroud)

因此,如果您导航到 php.ini 文件并删除分号,您可以将默认的日出/设置天顶值覆盖为您想要的任何值。在你的例子中,“90.8333”。

关于差异,“sun_info”采用时间、经度和纬度坐标的参数。因此,这可以在某个地方拥有更准确的数据库,而不是使用配置中设置的默认值。

参考: