如何计算日出/日落时间?

ski*_*ppy 23 time astronomy

我想跟踪日出和日落时间.在过去的几年里,我一直在用一个用我最喜欢的编程语言的流行库编写的小程序来做这件事.过去两个月我比往常更频繁地跟踪这些时间,我偶然注意到在春分日,日出时间比前一天增加了8分钟!我知道这是不可能的,并且与NOAA相比,发现我的上升和设定时间已经关闭了几天,事实上在一年中的大部分时间里似乎已经关闭了大约一分钟.

在这一点上,我想自己实现计算.有哪些算法或公式可用于此计算?

小智 9

您可以考虑阅读Wikipedia关于日出方程的文章.主要段落给出了等式:

哪里:

  • ω Ô时角在任日出(当负的值取)或日落(当正值取)的程度以度(°)
  • φ是地球上观测者的纬度(以度为单位)
  • δ是以度为单位的太阳赤纬

  • 如果OP关注1分钟的差异,那么你必须比球形地球近似做得更好 (3认同)

mat*_*exx 7

如果你想匹配NOAA,你必须咨询Jean Meeus的天文算法(主要是第15章).它很复杂!马丁贝克特是正确的,你必须定义日落.通常这是太阳上肢的明显上升或上升,这使得你的"标准"altitide -5/6度(不为零).并且您无法直接使用NOAA的准确度来计算日出或日落.你必须为所讨论的那天的明显右上升和下降创建一组控制方程,然后在一段时间内插入明显的右上升和下降,以找到标准高度的确切上升和设定时间.

希望这可以帮助.当我遇到同样的事情时,我花了大约一个月的时间消化AA并重新编写了我们所有的太阳能代码,并且仍然需要一年多的时间来解决我的代码破坏的一些极端情况.因此需要一些时间来弄明白.我不知道这个算法的任何公共代码示例,并且此刻没有任何共享,但如果可以,我很乐意帮助您解决一些令人头疼的问题.

  • @matexx代码在http://www.srrb.noaa.gov/highlights/sunrise/sunrise.html上.它只是javascript,所以`view source`会显示一切. (4认同)

lc.*_*lc. 0

我确实在NOAA 页面的“技术定义和计算详细信息”标题下看到了一些有趣的内容,但我确信您已经阅读过这些内容。

SO问题“给定一天中的时间和纬度/经度的太阳位置”的答案以及上述内容实际上可能就是您所需要的。

作为旁注(它不会直接回答您的问题),您是否有理由无法提取 NOAA 数据并将其用作查找表而不是计算它?如今,存储往往相对便宜。