python - 使用每小时 timedelta 生成日期时间列表

标签 python datetime timedelta hour

我正在使用此代码生成一系列每小时 datetime:

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")

但我得到了意想不到的结果:

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 seconds 属性更好地指定每小时间隔?我宁愿不使用像 NumPy 这样的外部包。

最佳答案

您可以直接构建timedelta,然后像这样添加:

代码:

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

关于python - 使用每小时 timedelta 生成日期时间列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48655358/

相关文章:

python - Django错误-django.db.utils.DataError : value too long for type character varying(1)

python - 如何设置高水位线以阻止 pyzmq 中被淹没的收件人?

python - 将 timedelta 转换为 float

python-3.x - 将秒数的numpy数组转换为分钟和秒

python - 如何在 Python 中获取 UTC 日期时间和 utcnow 日期时间之间的差异

python - Django 日期时间查询

java - 解析日期是 future 几分钟

python - 将类型为 "hh.mm.ss.ms"的时间增量添加到日期时间对象

python - 如何在python中将小时添加到当前时间

python - 在 python 交互式 shell 中实现类似于 "help"命令的类似操作