编程语言
首页 > 编程语言> > 如何检测Python中的日期是否连续?

如何检测Python中的日期是否连续?

作者:互联网

我有一个带有“日期”字段的访问表.它有每个记录的随机日期.我已经构建了一个脚本来将所有记录附加到列表中,然后设置列表以仅过滤掉唯一值:

dateList = []
# cursor search through each record and append all records in the date 
# field to a python list
for row in rows:
   dateList.append(row.getValue("DATE_OBSERVATION").strftime('%m-%d-%Y'))

# Filter unique values to a set
newList = list(set(dateList))

这将返回(在我的测试表上):

[’07 -06-2010′,’06 -24-2010′,’07 -05-2010′,’06 -25-2010′]

既然我有“DATE_OBSERVATION”字段的唯一值,我想检测是否:

>日期是单一的(即只返回一个唯一的日期,因为这是每条记录中的日期)
>如果日期是一系列日期(即所有日期都属于连续范围)
>如果日期是多个日期,但不在连续日期的范围内

我们欢迎所有的建议!
麦克风

解决方法:

您可以使用datetime对象的.toordinal()方法将日期对象简单地转换为整数,而不是滚动自己的连续函数.序数日期的最大值和最小值之间的差异比集合的长度多一个:

from datetime import datetime

date_strs = ['07-06-2010', '06-24-2010', '07-05-2010', '06-25-2010']
# date_strs = ['02-29-2012', '02-28-2012', '03-01-2012']
# date_strs = ['01-01-2000']
dates = [datetime.strptime(d, "%m-%d-%Y") for d in date_strs]

date_ints = set([d.toordinal() for d in dates])

if len(date_ints) == 1:
    print "unique"
elif max(date_ints) - min(date_ints) == len(date_ints) - 1:
    print "consecutive"
else:
    print "not consecutive"

标签:date-range,python,date
来源: https://codeday.me/bug/20191006/1862860.html