2

この問題と組み合わせて機能する time モジュールがあることは明らかですが、まだ見つけていません。Raspberry Pi で Pyephem を使用して、緯度経度座標の日の出と日没の時刻を調べようとしています。コードは非常に単純です:

import ephem
import datetime 
import time
now = datetime.datetime.now()
gmNow = time.mktime(time.localtime()) 
Vancouver = ephem.Observer()
Vancouver.lat = 49.2878
Vancouver.horizon = 0
Vancouver.lon = -123.0502
Vancouver.elevation = 80
Vancouver.date = now
# Vancouver.date = time.localtime()

sun = ephem.Sun()

print("sunrise is at",ephem.localtime(Vancouver.next_rising(sun)))
print("sunset is going to be at ",ephem.localtime(Vancouver.next_setting(sun)))
print("now is ",now)
print("gmNow is",gmNow)

何をエクスポートするか、それがいつ実行されるかは 8 時間も間違っています。そのため、ephem.localtime() は実際には実行されていないようです。

pi@raspberrypi ~ $ sudo python3 vivarium_sun.py 
sunrise is at 2014-09-19 12:55:56.000004
sunset is going to be at  2014-09-19 00:52:30.000004
now is  2014-09-19 06:22:24.014859
gmNow is 1411132944.0

それは私を夢中にさせています、そしてそれが理解されれば明らかにそれらの単純なことの1つなので、私はここでハイブマインドに行きます.

EDIT** Raspberry Pi のコマンド ラインに「date」と入力するだけで、次の結果が返されます。

pi@raspberrypi ~ $ date
Fri Sep 19 18:41:42 PDT 2014

これは正確です。

4

1 に答える 1

1

datetime.utcnow()現地時間の代わりにオブザーバーに渡す必要があります。

ephemfloat として渡された場合はラジアンを期待latitudeし、代わりに文字列を使用します。longitude

from datetime import datetime, timezone

import ephem

now = datetime.now(timezone.utc)
Vancouver = ephem.Observer()
Vancouver.lat = '49.2878'
Vancouver.horizon = 0
Vancouver.lon = '-123.0502'
Vancouver.elevation = 80
Vancouver.date = now
sun = ephem.Sun(Vancouver)

print("sunrise is at", ephem.localtime(Vancouver.next_rising(sun)))
print("sunset is going to be at ", 
      ephem.localtime(Vancouver.next_setting(sun)))
print("now is ",now.astimezone())

出力

sunrise is at 2014-09-20 06:55:38.000005
sunset is going to be at  2014-09-19 19:16:38.000004
now is  2014-09-19 19:15:04.171486-07:00
于 2014-09-19T14:58:30.820 に答える