Python 基础教程

Python 高级教程

Python 相关应用

Python 笔记

python 日期时间范围遍历操作

python 日期和时间操作全解 python 日期和时间操作全解


我们经常在离线任务中,用到基于输入的日期参数,计算指定日期范围内的相关数据统计,如统计从昨天算起近 30 天每天的统计数据,这里列出 python 几种常用的时间日期范围遍历操作。

推荐方式

利用 python 标准库的 datetime 模块的 date 和 timedelta 类进行范围限定,并结合 range 内置函数进行遍历。

假设输入的参数是昨天的日期,遍历最近每天的日期,并对每天进行业务 todo,示例如下:

from datetime import datetime, timedelta

# 模拟输入的昨日日期参数
from_arg_dt = '2020-09-07'

# 字符串日期转换成 datetime.datetime 对象
end_datetime = datetime.strptime(from_arg_dt, '%Y-%m-%d')

# 遍历近 30 天的日期
for i in range(30):
    # datetime 对象和 timedelta 对象可以进行日期时间加减操作,返回的是新的 datetime 对象
    dt = end_datetime - timedelta(days=30 - i)
    # 如需,也可以转换成 str 对象
    dt_str = dt.strftime('%Y-%m-%d')
    # todo other things

如果明确指定的日期的起始时间,遍历操作代码如下:

from datetime import date, timedelta

# 模拟输入起始及截止日期
begin = date(2020, 8, 20)
end = date(2020, 9, 7)

# range 函数进行遍历
for i in range((end - begin).days + 1):
    # date 对象和 timedelta 进行时间间隔计算,并返回 date 对西那个
    day = begin + timedelta(days=i)
    # 也可以根据需要,转换成 str 字符串对象
    day_str = day.strftime('%Y-%m-%d')
    # todo other things

datetime 模块的其中一个核心 api 是,timedelta 对象可以和 datetime、date、time 对象进行时间加减操作,且返回的还是原有对象类型(新的对象)。