回答问题

我已经查看了使用 ehem 计算日出和日落的示例,并且效果很好。

当我尝试计算这两次之间的中点时,我遇到了麻烦。这是我所拥有的:

import datetime
import ephem

o = ephem.Observer()
o.lat, o.long, o.date = '37.0625', '-95.677068', datetime.datetime.utcnow()
sun = ephem.Sun(o)
print "sunrise:", o.previous_rising(sun), "UTC"
print "sunset:",o.next_setting(sun), "UTC"
print "noon:",datetime.timedelta((o.next_setting(sun)-o.previous_rising(sun))/2)

我得到:

日出:2010/11/2 12:47:40 UTC

日落:2010/11/2 23:24:25 UTC

中午:5:18:22.679044

这就是我卡住的地方。我是一个 python 初学者,坦率地说,我不是一个程序员。

任何建议都将受到欢迎!

Answers

太阳正午_不是_日出和日落的平均值(解释见时间方程)。ephem包有获取运输时间的方法你应该使用它:

>>> import ephem
>>> o = ephem.Observer()
>>> o.lat, o.long = '37.0625', '-95.677068'
>>> sun = ephem.Sun()
>>> sunrise = o.previous_rising(sun, start=ephem.now())
>>> noon = o.next_transit(sun, start=sunrise)
>>> sunset = o.next_setting(sun, start=noon)
>>> noon
2010/11/6 18:06:21
>>> ephem.date((sunrise + sunset) / 2)
2010/11/6 18:06:08

请注意,今天中午(在您所在的位置)比日出和日落的平均值晚 13 秒。

(代码行ephem.date((sunrise + sunset) / 2)显示了如何轻松地操作ephem包中的日期,如果它是正确的做法。)

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐