Python獲取兩個日期之間的列表

2021-08-07 22:02:44 字數 2124 閱讀 5252

獲取兩個日期之間的日期列表如:輸入2012-09-21~2013-10-21

得到的結果為:2012-09-21,2012-09-22等等一直到2013-10-21

呼叫get_date_list函式傳入乙個時間範圍列表:如get_date_list([1,』2012-09-21』,』2013-10-21』])

傳入引數列表第0個代表狀態,0代表日期傳入是錯誤的,1,代表傳入乙個日期。2、代表傳入兩個日期,並且第二個日期是大於第乙個日期的合法日期。

#獲取兩個日期中間的日期列表

defgen_dates

(b_date, days):

day = timedelta(days=1)

for i in range(days):

yield b_date + day*i

defget_date_list

(user_say_date):

""" 獲取日期列表

:param start: 開始日期

:param end: 結束日期

:return:

"""data =

if user_say_date[0] == 1:

return data

elif user_say_date[0] == 2:

start = datetime.strptime(user_say_date[1],"%y-%m-%d").date()

end = datetime.strptime(user_say_date[2], "%y-%m-%d").date()

for d in gen_dates(start, (end-start).days):

#最後把日期加入

return data

else:

data =

return data

下面這個就可以解釋上面的一些疑問,為什麼需要狀態,我這裡對傳入日期做了判斷,因為使用者可以輸入乙個日期而不是範圍。

下面的函式就可以生成乙個使用者輸入的時間列表,並且帶有狀態。然後列表就會作為上面**函式的入參。

#日期處理

defcurdate

(str):

#首先判斷當前日期是連續的還是單一天數的。

str_date = re.split(r'~',str)

#判斷使用者輸入日期是不是有效日期

flog = 1

try:

for i in range(len(str_date)):

datetime.strptime(str_date[i],"%y-%m-%d")

except:

flog = 0

# 代表有兩個日期,或者就是只有乙個日期

if len(str_date) > 1

and flog == 1:

#判斷後面輸入的日期是否大於前面的日期,驗證使用者輸入資料是否正確

if datetime.strptime(str_date[0],"%y-%m-%d").date() > datetime.strptime(str_date[1],"%y-%m-%d").date():

#插入0代表資料錯誤

str_date.insert(0,0)

return str_date

else:

#否則插入2代表有兩個日期

str_date.insert(0,2)

return str_date

elif len(str_date) == 1

and flog == 1:

str_date.insert(0,1)

else:

str_date.insert(0,0)

return str_date

測試:

輸入乙個日期,如下圖。

測試範圍日期,如下圖

Python獲取兩個日期之間的列表

獲取兩個日期之間的日期列表如 輸入2012 09 21 2013 10 21 得到的結果為 2012 09 21,2012 09 22等等一直到2013 10 21 呼叫get date list函式傳入乙個時間範圍列表 如get date list 1,2012 09 21 2013 10 21 ...

獲取兩個日期之間天數

本人根據開發經驗,目前總結了3種方法 第一種 根據兩個日期間毫秒數計算,同理任何日期型別都可以轉換為對應的毫秒數 public static int daysbetween long time1,long time2 第二種 jdk8 localdate提供了toepochday 方法 1 將日期d...

java獲取兩個日期之間的所有日期的集合

1.獲取兩個字串日期之間所有日期的集合 獲取兩個日期字串之間的日期集合 param starttime string param endtime string return list yyyy mm dd public static listgetbetweendate string startti...