【问题标题】:python date range list elementspython日期范围列表元素
【发布时间】:2015-05-20 12:48:24
【问题描述】:

我想做范围(开始,结束)。我有天,前

开始日期 - 结束日期 ---------------------- 2015-05-17 - 2015-05-25 2015-06-10 - 2015-06-20 ---------------------- 开始日期 = [datetime.date(2015, 5, 17), datetime.date(2015, 6, 10)] enddate = [datetime.date(2015, 5, 25), datetime.date(2015, 6, 20)] 我需要范围开始日期和结束日期 需要天数 = 开始日期 [i] - 结束日期 [i] 1. datetime.date(2015, 5, 25) - datetime.date(2015, 5, 17) 2. atetime.date(2015, 6, 20), datetime.date(2015, 6, 10) 在我想要范围分开之后 结果 ------------ 2015-05-17 2015-05-18 2015-05-19 2015-05-20 2015-05-21 2015-05-22 2015-05-23 2015-05-24 2015-05-25 结果 ---------- 2015-06-10 2015-06-11 2015-06-12 2015-06-13 2015-06-14 2015-06-15 2015-06-16 2015-06-17 2015-06-18 2015-06-19 2015-06-20

我怎样才能做到这一点?请帮助我,在此先感谢。

【问题讨论】:

    标签: python date python-3.x range date-range


    【解决方案1】:

    timedelta 可以使用 range,(end-start).days+1) 可以获取天数。

    from datetime import datetime,timedelta
    start,end = datetime(2015, 5, 17), datetime(2015, 5, 25)
    dates = [start + timedelta(days=i) for i in range((end-start).days+1)]
    for dte in dates:
        print(dte.date())
    
    2015-05-17
    2015-05-18
    2015-05-19
    2015-05-20
    2015-05-21
    2015-05-22
    2015-05-23
    2015-05-24
    2015-05-25
    

    第二个范围的逻辑完全相同。

    start,end = datetime(2015, 6, 10), datetime(2015, 6, 20)
    dates = [start + timedelta(days=i) for i in range((end-start).days+1)]
    for dte in dates:
        print(dte.date())
    
    2015-06-10
    2015-06-11
    2015-06-12
    2015-06-13
    2015-06-14
    2015-06-15
    2015-06-16
    2015-06-17
    2015-06-18
    2015-06-19
    2015-06-20
    

    如果您必须使用这两个列表,请使用 zip:

    from datetime import date,timedelta
    start_dates = [date(2015, 5, 17), date(2015, 6, 10)]
    end_dates = [date(2015, 5, 25), date(2015, 6, 20)]
    dates = [start + timedelta(days=i) for start, end in zip(start_dates,end_dates) for i in range((end-start).days+1) ]
    for dte in dates:
        print(dte)
    

    输出:

    2015-05-17
    2015-05-18
    2015-05-19
    2015-05-20
    2015-05-21
    2015-05-22
    2015-05-23
    2015-05-24
    2015-05-25
    2015-06-10
    2015-06-11
    2015-06-12
    2015-06-13
    2015-06-14
    2015-06-15
    2015-06-16
    2015-06-17
    2015-06-18
    2015-06-19
    2015-06-20
    

    【讨论】:

    • 你好兄弟,是的,我同意,这是真的,但我需要上面的例子 startdate = [datetime.date(2015, 5, 17), datetime.date(2015, 6, 10)] enddate = [datetime.date(2015, 5, 25), datetime.date(2015, 6, 20)]
    • 我需要范围后有开始日期(17,10)和结束日期(25,20)
    • 你误会了,它有效,但我需要其他方法
    • 我在开始日期有2个或更多项目,startdate = [datetime.date(2015, 5, 17), datetime.date(2015, 6, 10)]
    • 是的,但是 locic 是完全一样的,只是按照我的回答去做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多