我想设置一个 Python 程序,以便能够从各个位置提取日出/日落,以触发本地位置的灯光,以象征远程日出——如果你真的在那里。我的意思是,如果您住在柏林,并且您在 12 月中旬的日出/日落时间是上午 7:45/下午 4:15,那么您可以有一个小 LED,当一些热带日出发生时会亮起(比如夏威夷)。但这是根据您自己的当地时间而发生的。
因此,使用 Python 的 ephem、pytz 和 localtime,提取各个位置的日出/日落信息,并根据每个位置触发事件。
我已经使用不列颠哥伦比亚省的温哥华和法属圭亚那的乔治敦作为测试用例建立了一个测试程序,它大部分都有效——但乔治敦的日出/日落是完全错误的。
您可以将整个内容剪切并粘贴到 Python 窗口中进行测试,请原谅无关的时间调用,但我发现查看每个时间调用的内容很有趣。
尽管如此,您会看到 Guyana.date 是绝对正确的,但日出/日落时间大约是 1:53 AM / 13:57 PM,完全被破坏了。关于这怎么会变得如此可怕,可怕的错误的任何想法?
编辑删除不必要的代码
import ephem
from datetime import datetime, timedelta
from pytz import timezone
import pytz
import time
Guyana = ephem.Observer()
Guyana.lat = '5'
Guyana.lon = '58.3'
Guyana.horizon = 0
Guyana.elevation = 80
Guyana.date = datetime.utcnow()
sun = ephem.Sun()
print("Guyana.date is ",Guyana.date)
print("Guyana sunrise is at",Guyana.next_rising(sun))
print("Guyana sunset is going to be at ",Guyana.next_setting(sun))
结果如下:
Guyana.date is 2014/10/4 16:47:36
Guyana sunrise is at 2014/10/5 01:53:26
Guyana sunset is going to be at 2014/10/5 13:57:05
这有什么问题,今天圭亚那的实际日出是早上 5 点 40 分,所以 1 点 53 分 26 秒不仅仅是几个小时,而是在很多方面。