簡體   English   中英

如何在python中獲取兩個日期之間的所有日期(月,日和年)?

[英]How to get all dates (month, day and year) between two dates in python?

情況:我正在嘗試構造一個簡單的方法,該方法接受代表兩個不同日期的兩個不同整數。 例如,2012年5月25日為20120525,2012年6月26日為20120627。 我希望此方法返回這些整數類型的列表,這些列表表示兩個日期參數之間的所有日期。

問題:關於此操作以及每個月分別處理28、29、30或31天的月份,我能得到任何建議嗎? 我想可以通過除以10的冪來進行整數除法運算,然后按照上述特定條件遞增這些數字,從而做到這一點,但是我覺得必須有一種更簡單的方法。

您不必重新發明輪子。 只需將字符串解析為datetime對象,然后讓python為您做數學:

from dateutil import rrule
from datetime import datetime

a = '20120525'
b = '20120627'

for dt in rrule.rrule(rrule.DAILY,
                      dtstart=datetime.strptime(a, '%Y%m%d'),
                      until=datetime.strptime(b, '%Y%m%d')):
    print dt.strftime('%Y%m%d')

版畫

20120525
20120526
20120527
…
20120625
20120626
20120627

一種不使用rrule的替代解決方案:

import datetime

d1 = datetime.date(2015, 1, 1)
d2 = datetime.date(2015, 2, 6)
days = [d1 + datetime.timedelta(days=x) for x in range((d2-d1).days + 1)]

for day in days:
    print(day.strftime('%Y%m%d'))

輸出:

20150101
20150102
20150103
<snip>
20150205
20150206

您可以使用pandas.date_range

import pandas

pd.date_range('2012-05-25', '2012-06-27', freq='D')

會產生

DatetimeIndex(['2012-05-25', '2012-05-26', '2012-05-27', '2012-05-28',
               '2012-05-29', '2012-05-30', '2012-05-31', '2012-06-01',
               ...
               '2012-06-22', '2012-06-23', '2012-06-24', '2012-06-25',
               '2012-06-26', '2012-06-27'],
               dtype='datetime64[ns]', freq='D')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM