两个日期时间之间的 15 分钟间隔数

Number of 15 minutes intervals between two datetimes

from datetime import datetime, timedelta

now = datetime.now()
start = now + timedelta(minutes = 15)
finish = start + timedelta(minutes = 30)

如何找到开始和结束之间存在的 15 分钟间隔数?

你需要找出开始和结束之间的分钟数之差,除以 15,并将其设为整数:

now = datetime.now()
start = now + timedelta(minutes = 15)
finish = start + timedelta(minutes = 30)
difference = (finish - start).total_seconds()/60
quarters = int(difference/15)
from datetime import datetime, timedelta

now = datetime.now()
start = now + timedelta(minutes = 15)
finish = start + timedelta(minutes = 30)

elapsed = finish - start
number_of_intervals = elapsed / timedelta(minutes=15)

elapsedstartfinish 之间的 timedelta。除以 15 分钟以计算其中有多少个 15 分钟间隔。

请注意,此 returns 是一个浮点数,因此包括小数区间。适当舍入。

我会写类似这样的东西:

from datetime import datetime, timedelta

DATE_TIME_STRING_FORMAT = '%Y-%m-%dT%H:%M:%S.%fZ'

from_date_time = datetime.strptime('2016-06-06T05:00:00.000Z',
                                   DATE_TIME_STRING_FORMAT)
to_date_time = datetime.strptime('2016-06-06T06:00:00.000Z',
                                 DATE_TIME_STRING_FORMAT)

date_times = [from_date_time.strftime(DATE_TIME_STRING_FORMAT)]
date_time = from_date_time
while date_time < to_date_time:
    date_time += timedelta(minutes=15)
    date_times.append(date_time.strftime(DATE_TIME_STRING_FORMAT))

print(date_times)

输出:

['2016-06-06T05:00:00.000000Z', '2016-06-06T05:15:00.000000Z', '2016-06-06T05:30:00.000000Z', '2016-06-06T05:45:00.000000Z', '2016-06-06T06:00:00.000000Z']

编辑: 如果您只对 15 分钟间隔的数量感兴趣,您可以使用类似的东西: 从日期时间导入日期时间,timedelta

DATE_TIME_STRING_FORMAT = '%Y-%m-%dT%H:%M:%S.%fZ'

from_date_time = datetime.strptime('2016-06-06T05:00:00.000Z',
                                   DATE_TIME_STRING_FORMAT)
to_date_time = datetime.strptime('2016-06-06T06:00:00.000Z',
                                 DATE_TIME_STRING_FORMAT)

print((to_date_time-from_date_time) / timedelta(minutes=15))

您可以使用 time 库代替日期时间。 time 适用于秒,您应该将分钟转换为秒:

import time
interval = 45*60
start = time.time()
finish = time.time() + interval
diff = finish - start
print(diff // (15*60))

简单地比较 startfinish 就像这样:

from datetime import datetime, timedelta

now = datetime.now()
start = now + timedelta(minutes = 15)
finish = start + timedelta(minutes = 30)

elapsed = finish - start # This is a timedelta object

reference_interval = 15*60 # interval in seconds

number_of_intervals = elapsed.seconds/reference_interval

正如 Sören 所指出的,如果 'elapsed' 超过一天,这将不起作用,在这种情况下,只需按以下方式计算数字:

number_of_intervals = (elapsed.days*86400+elapsed.seconds)/reference_interval
# (86400 seconds in a day)