程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

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

发布于2019-10-07 19:28     阅读(2888)     评论(0)     点赞(4)     收藏(1)


我有一个带有“日期”字段的访问表。每个记录都有随机的日期。我构建了一个脚本,将所有记录追加到列表中,然后将列表设置为仅过滤出唯一值:

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”字段的唯一值,我想检测是否:

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

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


解决方案


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

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"


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/133142/17eece950b6837f08cca/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

4 0
收藏该文
已收藏

评论内容:(最多支持255个字符)