簡體   English   中英

如何判斷列表中的兩個日期在 Python 中是否連續?

[英]How to tell if two dates in a list are consecutive in Python?

我已按順序對字符串日期列表進行排序

sorteddates =['2017-04-26', '2017-05-05', '2017-05-10', '2017-05-11', '2017-05-16']

我嘗試使用它來按連續日期對我的代碼進行排序,因為我很難理解。 我想看看哪兩個日期是連續的。 只有兩個日期。

dates = [datetime.strptime(d, "%Y-%m-%d") for d in sorteddates]
date_ints = set([d.toordinal() for d in dates])
  1. 將列表從 str 轉換為datetime - 仍然按排序順序。
  2. 遍歷列表; 對於每個項目,檢查下一個項目是否在一天之后—— datetime也有timedelta值。

一些代碼:

# Convert list to datetime; you've shown you can do that part.
enter code here
one_day = datetime.timedelta(days=1)
for today, tomorrow in zip(sorteddates, sorteddates[1:]):
    if today + one_day == tomorrow:
        print ("SUCCESS")

如果我正確理解您的問題,要獲得第一對連續日期,您可以檢查它們的增量是否為 1 天:

from datetime import datetime

sorteddates =['2017-04-26', '2017-05-05', '2017-05-10', '2017-05-11', '2017-05-16']
dates = [datetime.strptime(d, "%Y-%m-%d") for d in sorteddates]

d = next(((d1, d2) for d1, d2 in zip(dates, dates[1:]) if (d2 - d1).days == 1), None )  # <-- returns pair or None if no consecutive dates are found

print(d)

印刷:

(datetime.datetime(2017, 5, 10, 0, 0), datetime.datetime(2017, 5, 11, 0, 0))

或格式化:

if d:
    print([datetime.strftime(i, "%Y-%m-%d") for i in d])

印刷:

['2017-05-10', '2017-05-11']

暫無
暫無

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

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