【发布时间】:2011-09-12 08:53:12
【问题描述】:
我正在编写一个 Python 程序,该程序需要确定它是否是日出后,只给定当前的 UTC 时间和目标纬度和经度。我看到应用程序一直在做这种事情,但我不知道它是如何完成的。有什么想法吗?
【问题讨论】:
-
这是我找到的第一个链接,但对于像我这样微积分背景有限的人来说,这还不够。
-
当然也取决于日期。
我正在编写一个 Python 程序,该程序需要确定它是否是日出后,只给定当前的 UTC 时间和目标纬度和经度。我看到应用程序一直在做这种事情,但我不知道它是如何完成的。有什么想法吗?
【问题讨论】:
这里有人用 Python 实现日出/日落计算:http://michelanders.blogspot.com/2010/12/calulating-sunrise-and-sunset-in-python.html
【讨论】:
算法的完整布局是here
真的没有太多要补充的。引用文档中的 10 点将其分解为简单的重现步骤,这些步骤实际上可以用任何语言实现。
【讨论】:
【讨论】:
您需要正常工作™ 的东西吗?使用高级语言。而且你知道它总是有效的。你怎么能相信 122 行先进的天体物理学?你不能。但您始终可以信任 PHP。
>>> def is_day(lat, lon): # optinally adjust zenith (currently 96) at the end of the line
... return subprocess.check_output(["php","-r","""date_default_timezone_set("GMT");\n$a=date_sunrise(time(),SUNFUNCS_RET_DOUBLE,{0},{1},{2},0);\n$b=date_sunset(time(),SUNFUNCS_RET_DOUBLE,{0},{1},{2},0);\n$t=date("H")+date("i")/60+date("s")/3600;\necho($a<$b?($t>$a&&$t<$b):($t>$a||$t<$b))?"day":"night";""".format(lat,lon,96)])=="day"
... # ^^ optionally adjust zenith here
...
>>> is_day(-33,151) # Sydney
True
>>> is_day(0,0) # Some hundred km off the coast of Africa
False
>>> __import__("datetime").datetime.utcnow()
datetime.datetime(2012, 2, 10, 22, 29, 30, 365019)
>>>
【讨论】: