下一个设置不是明天

时间:2012-10-16 16:27:25

标签: pyephem

试图计算Sun下一次设置时间的时间,我明天获得了一个值 - 但是我正在计算,而太阳肯定超出了地平线!

是我的观察地点;这就是我在终端上得到的:

>>> ephem.now()
2012/10/16 16:02:00
>>> print m.next_setting(ephem.Sun(), use_center=True)
2012/10/17 16:38:36
那是明天的时间。也:

>>> m.previous_setting(ephem.Sun()) < ephem.now()
False
>>> m.previous_setting(ephem.Sun())
2012/10/16 16:42:14

所以previous_setting是将来的。

我哪里错了?

1 个答案:

答案 0 :(得分:0)

next_setting()previous_setting()函数查询ephem.now()的当前值。相反,他们会查找.date对象的Observer之前或之后的日期 - 因此,如果观察者.date,您在笔记本电脑上的结果只会发生在我自己的实验中以某种方式设置为未来的一天。如果我准确使用您提供的日期和时间,我会得到以下设置时间:

import ephem
m = ephem.Observer()
m.long = '7:42:00'
m.lat = '45:04:00'
m.date = '2012/10/16 16:02:00'

print m.next_setting(ephem.Sun(), use_center=True)
# --> 2012/10/16 16:40:27

print m.previous_setting(ephem.Sun())
# --> 2012/10/15 16:44:05

您是否可以尝试运行此脚本并查看结果?我笔记本电脑上当前显示的ephem.__version__为3.7.5.1,以防我们之间存在差异。

所以:如果您看到这样的奇怪结果,那么您需要调查观察者的ephem.now()属性与日落之间的关系,而不是打印并将.date的值与日落时间进行比较。你出去的时候。如果你可以制作一个像我上面展示的那样的小样本脚本,那就设置了自己的时间,而不是依靠now()来表示PyEphem正在犯的错误(因为当我看到你的问题时,我的{ {1}}显然与原来的“现在”有点不同!),然后我会尽力追查问题。