Когда я пытаюсь выработать следующий момент заката с помощью пифема, это дает мне время заката сегодня, даже если я звоню после заката сегодня. Поведение, которое я ожидаю, это возвращение заката завтра - то есть следующий закат. Возможно, я делаю что-то простое и неправильное, но я не могу решить это.
При публикации этого вопроса кажется, что проблема может быть в использовании localtime
.
Вот код:
#import modules
import datetime
import ephem
now = datetime.datetime(2020, 3, 4, 21, 00, 00) #set a relevant time after sunset today
wa = ephem.Observer() #create observer object
wa.lat = '47' #set observer parameters
wa.lon = '-122'
wa.date = now
s = ephem.Sun() #identify observed object (the sun)
s.compute(wa) #compute parameters
next_sunrise = ephem.localtime(wa.next_rising(s)) #return sunrise and sunset
next_sunset = ephem.localtime(wa.next_setting(s))
print('Its currently {}, next sunrise will be {}.'.format(now, next_sunrise))
print('Its currently {}, next sunset will be {}.'.format(now, next_sunset))
Дает:
Its currently 2020-03-04 21:00:00, next sunrise will be 2020-03-05 06:38:46.186438.
Its currently 2020-03-04 21:00:00, next sunset will be 2020-03-04 17:59:11.109622.
[Finished in 0.065s]
Это явно неверно: следующий закат наступит в 2020-03-05, если после захода солнца в 2020-03-04.
Примечательно, что это работает, если я не использую localtime
(и использую Гринвич - чтобы упростить проверку результатов):
#import modules
import datetime
import ephem
now = datetime.datetime(2020, 3, 4, 21, 00, 00) #set a relevant time after sunset today
greenw = ephem.Observer() #create observer object
greenw.lat = '50' #set observer parameters
greenw.lon = '0'
greenw.date = now
s = ephem.Sun() #identify observed object (the sun)
s.compute(greenw) #compute parameters
next_sunrise = greenw.next_rising(s) #return sunrise and sunset
next_sunset = greenw.next_setting(s)
print('Its currently {}, next sunrise will be {}.'.format(now, next_sunrise))
print('Its currently {}, next sunset will be {}.'.format(now, next_sunset))
Дает
Its currently 2020-03-04 21:00:00, next sunrise will be 2020/3/5 06:33:54.
Its currently 2020-03-04 21:00:00, next sunset will be 2020/3/5 17:49:44.
[Finished in 0.07s]
Я не уверен, в чем здесь проблема. Я просмотрел документацию, но не могу разобраться. Возможно, есть проблема с localtime
, или я упускаю что-то простое - извинения, я новичок как в python, так и в этом модуле.