3
La sortie doit traiter la première date comme "jour" et la seconde comme "nuit". Je joue avec ça depuis quelques heures maintenant et je n'arrive pas à comprendre ce que je fais de mal. Des idées?Calcul Python Ephem/Datetime
Modifier Je suppose que le problème est dû à ma date de mise en œuvre comparaison
Sortie:
$ python time_of_day.py
* should be day:
event date: 2010/4/6 16:00:59
prev rising: 2010/4/6 09:24:24
prev setting: 2010/4/5 23:33:03
next rise: 2010/4/7 09:22:27
next set: 2010/4/6 23:34:27
day
* should be night:
event date: 2010/4/6 00:01:00
prev rising: 2010/4/5 09:26:22
prev setting: 2010/4/5 23:33:03
next rise: 2010/4/6 09:24:24
next set: 2010/4/6 23:34:27
day
time_of_day.py
import datetime
import ephem # install from http://pypi.python.org/pypi/pyephem/
#event_time is just a date time corresponding to an sql timestamp
def type_of_light(latitude, longitude, event_time, utc_time, horizon):
o = ephem.Observer()
o.lat, o.long, o.date, o.horizon = latitude, longitude, event_time, horizon
print "event date ", o.date
print "prev rising: ", o.previous_rising(ephem.Sun())
print "prev setting: ", o.previous_setting(ephem.Sun())
print "next rise: ", o.next_rising(ephem.Sun())
print "next set: ", o.next_setting(ephem.Sun())
if o.previous_rising(ephem.Sun()) <= o.date <= o.next_setting(ephem.Sun()):
return "day"
elif o.previous_setting(ephem.Sun()) <= o.date <= o.next_rising(ephem.Sun()):
return "night"
else:
return "error"
print "should be day: ", type_of_light('45.959','-66.6405','2010/4/6 16:01','-4', '-6')
print "should be night: ", type_of_light('45.959','-66.6405','2010/4/6 00:01','-4', '-6')
N'êtes-vous pas passer les mêmes valeurs à la fois « devrait être jour » et « devrait être la nuit »? – miara
@miara J'ai réparé ça ... – dassouki