У меня есть данные с начальным и конечным временем в нем (формат даты и времени), и я хочу рассчитать продолжительность в часах на основе более ограниченного диапазона дат. Но до сих пор я не увенчалась успехом. (Все еще очень любитель с питоном.)Фильтр Python в диапазоне datetime?
Пример: Джон Доу жил в 123 Main St с 1990-01-01T00: 00: 00.0 до 2016-12-31T23: 59: 59.0, но я хочу знать, как много часов он жил там в период с октября по декабрь 2015 года.
Код ниже будет успешно вычислять часы, но я не смог успешно фильтровать данные, так что я получаю часы только между датами 1 октября 2015 года и 31 декабря 2015 года.
from datetime import datetime
# The getValue function retrieves the datetime values from the table
time1str = getValue("START_DT_TM")
time2str = getValue("STOP_DT_TM")
# Intended date range
# periodstart = datetime.strptime("2015-10-01T00:00:00.0", '%Y-%m-%dT%H:%M:%S.%f')
# periodend = datetime.strptime("2015-12-31T23:59:59.0", '%Y-%m-%dT%H:%M:%S.%f')
time1 = datetime.strptime(time1str, '%Y-%m-%dT%H:%M:%S.%f')
time2 = datetime.strptime(time2str, '%Y-%m-%dT%H:%M:%S.%f')
timen = datetime.strptime(nowstr, '%Y-%m-%d %H:%M:%S.%f')
timef = (time2-timen).days*24
if timef > 0:
delta = timen - time1
seconds = delta.seconds/1440
days = delta.days*24
return str(days+seconds)
else:
delta = time2 - time1
seconds = delta.seconds/1440
days = delta.days*24
return str(days+seconds)
почему не только рассчитать количество часов между 1 окт 2015 и 31 дек 2015 ? Для любого диапазона вам просто нужно определить верхний и нижний предел с помощью простых сравнений, а затем найти количество часов в этом диапазоне, как вы только что сделали –
Я должен был быть более ясным. Проблема в том, что в данных, с которыми я работаю, существует несколько длительностей, перекрывающих диапазон (1 октября - 31 декабря).Итак, чтобы использовать тот же пример, рассмотрите четыре разных случая: Адам живет там до периода, но уходит в течение периода; Боб начинает жить там после начала периода, но уходит до окончания периода; Крис начинает жить там после начала периода, но уходит после окончания периода; и Дейв живет там до и после окончания периода. Мне нужно уметь рассчитать продолжительность пребывания каждого человека в пределах диапазона. –