Question: Having this error: The call daytime ( datetime . datetime ( 2 0 1 5 , 1 0 , 3 1 , 6 , 0

Having this error:
The call daytime(datetime.datetime(2015,10,31,6,0, tzinfo=),daycycle) returns False, not True.
def daytime(time,daycycle):
"""
Returns True if the time takes place during the day, False otherwise (and
returns None if a key does not exist in the dictionary).
A time is during the day if it is after sunrise but before sunset, as
indicated by the daycycle dictionary.
A daycycle dictionary has keys for several years (as strings). The value for
each year is also a dictionary, taking strings of the form 'mm-dd'. The
value for that key is a THIRD dictionary, with two keys "sunrise" and
"sunset". The value for each of those two keys is a string in 24-hour
time format.
For example, here is what part of a daycycle dictionary might look like:
"2015": {
"01-01": {
"sunrise": "07:35",
"sunset": "16:44"
},
"01-02": {
"sunrise": "07:36",
"sunset": "16:45"
},
...
}
In addition, the daycycle dictionary has a key 'timezone' that expresses the
timezone as a string. This function uses that timezone when constructing
datetime objects using data from the daycycle dictionary. Also, if the time
parameter does not have a timezone, we assume that it is in the same timezone
as the daycycle dictionary.
Parameter time: The time to check
Precondition: time is a datetime object
Parameter daycycle: The daycycle dictionary
Precondition: daycycle is a valid daycycle dictionary, as described above
"""
# HINT: Use the code from the previous exercise to get sunset AND sunrise
# Add a timezone to time if one is missing (the one from the daycycle)
year = time.year
month_day = time.strftime('%m-%d')
day_info = daycycle[str(year)][month_day]
sunrise_str = day_info['sunrise']
sunset_str = day_info['sunset']
if time.tzinfo is None:
tz = pytz.timezone(daycycle['timezone'])
time = tz.localize(time)
else:
tz = time.tzinfo
sunrise = datetime.datetime.combine(time.date(), datetime.datetime.strptime(sunrise_str,'%H:%M').time(), tzinfo=tz)
sunset = datetime.datetime.combine(time.date(), datetime.datetime.strptime(sunset_str,'%H:%M').time(), tzinfo=tz)
return sunrise <= time < sunset

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!