python日期范围列表元素

2024-09-29 19:24:21 发布

您现在位置:Python中文网/ 问答频道 /正文

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


    start date -  end date
    -----------------------
    2015-05-17 - 2015-05-25
    2015-06-10 - 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)]

i need range startdate and enddate 

need_days = startdate[i] - enddate[i]
1. datetime.date(2015, 5, 25) - datetime.date(2015, 5, 17)
2. atetime.date(2015, 6, 20), datetime.date(2015, 6, 10)

after i want range separate
result
------------
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

result
----------
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

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


Tags: anddatetimedaterangeresultneeddaysstart
1条回答
网友
1楼 · 发布于 2024-09-29 19:24:21

可以将range与timedelta一起使用,用(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

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

^{pr2}$

如果必须使用这两个列表,请使用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

相关问题 更多 >

    热门问题