使用每小时 timedelta 生成日期时间列表 [英] Generate list of datetimes with hourly timedelta
本文介绍了使用每小时 timedelta 生成日期时间列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用此代码生成一系列每小时 datetime
:
I am using this code to generate a range of hourly datetime
's:
from datetime import datetime, timedelta
def daterange(start_date, end_date):
# timedelta only has days and seconds attributes
for n in range(int ((end_date - start_date).seconds/3600 + 1)):
yield start_date + timedelta(n)
start_date = datetime(2013, 1, 1, 14, 00)
end_date = datetime(2015, 6, 2, 5, 00)
for single_date in daterange(start_date, end_date):
print single_date.strftime("%Y-%m-%d %H:%M")
但我得到了意想不到的结果:
But I am getting an unexpected result:
2013-01-01 14:00
2013-01-02 14:00
2013-01-03 14:00
2013-01-04 14:00
2013-01-05 14:00
2013-01-06 14:00
2013-01-07 14:00
2013-01-08 14:00
2013-01-09 14:00
2013-01-10 14:00
2013-01-11 14:00
2013-01-12 14:00
2013-01-13 14:00
2013-01-14 14:00
2013-01-15 14:00
2013-01-16 14:00
如何使用 timedelta
秒属性更好地指定每小时间隔?我宁愿不使用像 NumPy 这样的外部包.
How can I better specify an hourly interval with the timedelta
seconds attribute? I'd rather not use external packages like NumPy.
推荐答案
可以直接构建timedelta
,然后添加如下:
You can build the timedelta
directly and then add like:
def daterange(start_date, end_date):
delta = timedelta(hours=1)
while start_date < end_date:
yield start_date
start_date += delta
测试代码:
from datetime import datetime, timedelta
start_date = datetime(2013, 1, 1, 14, 00)
end_date = datetime(2015, 6, 2, 5, 00)
for single_date in daterange(start_date, end_date):
print(single_date.strftime("%Y-%m-%d %H:%M"))
结果:
2013-01-01 14:00
2013-01-01 15:00
2013-01-01 16:00
2013-01-01 17:00
2013-01-01 18:00
2013-01-01 19:00
2013-01-01 20:00
2013-01-01 21:00
2013-01-01 22:00
2013-01-01 23:00
2013-01-02 00:00
2013-01-02 01:00
这篇关于使用每小时 timedelta 生成日期时间列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文