2

太陽が次に沈む時刻を計算しようとすると、明日の値が得られますが、太陽が確実に地平線上にある間に計算しています!

m は私の観測サイトです。それが私が端末で得たものです:

>>> 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 は未来です。

どこが間違っていますか?

4

1 に答える 1

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()の関係を調査する必要があります。上に示したような小さなサンプル スクリプトを作成できれば、PyEphem が犯した間違いを示すこと.dateに頼るのではなく、独自の時間を設定できます (あなたの質問を見るまでに、私のスクリプトは明らかに少し異なっているからです)。あなたの元の「今」!)、問題を追跡するために最善を尽くします。now()now()

于 2012-10-18T23:06:12.960 に答える