<< ..

使用Python生成自然周时间序列

发布时间:

问题

处理批量ETL任务时候,经常需要按周去回滚数据。 这时候就需要按周去生成一个时间范围的序列,将序列里的开始和结束时间作为入参传给ETL代码。 下面提供一种自然周时间序列生成的方法:

解决

import datetime as dt
import time
import json


def gen_week_range():
    weekend_index = (6, 5)  # Sunday, Saturday
    requested_range = (dt.datetime(2019, 4, 14, 0, 0), dt.datetime(2021, 1, 1, 0, 0))

    start, end = requested_range
    sun, sat = weekend_index
    cur = start
    my_range = []

    while cur < end:
            cr = []
            cr.append(cur)
            cur = end if end < cur+dt.timedelta(days=6) else (cur+dt.timedelta(days=(sun if cur.weekday() == sun else (sat-cur.weekday()))))
            cr.append(cur)
            cur += dt.timedelta(days=1)
            my_range.append(cr)
    return my_range

date_list = gen_week_range()