生成时间戳

from datetime import datetime, timedelta

def generate_intervals_for_day(day: datetime):
    intervals = []
    interval = timedelta(minutes=15)
    day_str = day.strftime('%Y-%m-%d')

    if day.weekday() == 4:  # Friday, weekday()返回0~6,周五是4
        # 0:00 - 8:00 一段
        start1 = datetime.strptime(day_str + " 00:00:00", "%Y-%m-%d %H:%M:%S")
        end1 = datetime.strptime(day_str + " 08:00:00", "%Y-%m-%d %H:%M:%S")
        intervals.append((start1, end1))

        # 8:00 - 20:00 15分钟间隔
        current = end1
        end2 = datetime.strptime(day_str + " 20:00:00", "%Y-%m-%d %H:%M:%S")
        while current < end2:
            start_period = current
            end_period = current + interval
            intervals.append((start_period, end_period))
            current += interval

        # 20:00 - 24:00 一段
        start3 = end2
        end3 = datetime.strptime(day_str + " 23:59:59", "%Y-%m-%d %H:%M:%S") + timedelta(seconds=1)
        intervals.append((start3, end3))

    else:
        # 非周五,0:00 - 24:00 15分钟间隔
        start = datetime.strptime(day_str + " 00:00:00", "%Y-%m-%d %H:%M:%S")
        end = start + timedelta(days=1)
        current = start
        while current < end:
            start_period = current
            end_period = current + interval
            intervals.append((start_period, end_period))
            current += interval

    return intervals

def format_interval(interval):
    start, end = interval
    start_str = start.strftime('%Y-%m-%d %H:%M:%S.000 +0800')
    end_str = end.strftime('%Y-%m-%d %H:%M:%S.000 +0800')
    return f"from('{start_str}') to ('{end_str}')"

def main():
    # 今天日期
    today = datetime.now()
    intervals = generate_intervals_for_day(today)

    # 输出所有时间段
    for interval in intervals:
        print(format_interval(interval))

    # 取最后时间段结束时间格式化
    last_end = intervals[-1][1]
    formatted_final_time = f"{last_end.strftime('%Y%m%d')}——{last_end.strftime('%H%M%S')}"

    print("\n最后的时间点格式化为:")
    print(formatted_final_time)

if __name__ == "__main__":
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值