Мне нужно создать четыре объекта datetime в Python:
"The next instance of 5:30AM EST"
"The next instance of 8:30AM EST"
"The next instance of 1:00PM EST"
"The next instance of 5:30PM EST"
Затем мне нужно найти, какая из них ближе всего к текущей дате/времени.
Хотел бы я сказать, что у меня есть начальный код, но я не знаю, с чего начать.
Это должно заставить вас начать. У меня есть текущее время, которое передается в функцию как дата-время, поэтому, если аргумент находится в EST, это должно сработать.
def find_next(cur_dt):
import datetime as dt
t = [dt.time(5,30), dt.time(8,30), dt.time(13,0), dt.time(17,30)]
cur_t = cur_dt.time()
cur_d = cur_dt.date()
for i in range(len(t)):
if t[i] > cur_t:
rt = [t[(j+i)%len(t)] for j in range(len(t))]
rd = [cur_d] * (len(t)-i) + [cur_d + dt.timedelta(days=1)]*i
return [dt.datetime.combine(rd[j],rt[j]) for j in range(len(rt))]
# everything happens tomorrow
return [dt.datetime.combine(cur_d + dt.timedelta(days=1), i) for i in t]
Результатом будут объекты, в порядке, начиная с "скорейшего" и т.д.
Кажется, это может быть вопрос о домашнем задании. Достаточно ли кода примера, чтобы вы начали? Вероятно, это не МОСТ эффективный, но он будет работать.
from datetime import datetime, time, timedelta
now = datetime.now()
today = datetime.date(now)
tomorrow = today + timedelta(days=1)
time_a = time (4, 0)
today_a = datetime.combine(today, time_a)
tomorrow_a = datetime.combine(tomorrow, time_a)
if (today_a - now)>timedelta(0):
print "%s is in the future" % today_a
if (tomorrow_a - now)>timedelta(0):
print "%s is in the future" % tomorrow_a
Для списка "t" вы можете использовать: t = [время (5,30), время (8,30), время (13,0), время (17,30)] now = datetime.now()
today = [x for x in t if datetime.combine(today, x) > now]
not_today = set(t) - set(today)
[t[(j+i)%len(t)] for j in range(len(t))]
, но это происходит в старых уловках.