博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python获取两个日期之间的列表
阅读量:6624 次
发布时间:2019-06-25

本文共 1846 字,大约阅读时间需要 6 分钟。

QQ交流群:127591054

JackChiang QQ:595696297

获取两个日期之间的日期列表如:输入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、代表传入两个日期,并且第二个日期是大于第一个日期的合法日期。

#获取两个日期中间的日期列表def gen_dates(b_date, days):    day = timedelta(days=1)    for i in range(days):        yield b_date + day*idef get_date_list(user_say_date):    """    获取日期列表    :param start: 开始日期    :param end: 结束日期    :return:    """    data = []    if user_say_date[0] == 1:        data.append(user_say_date[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):            data.append(d)        #最后把日期加入        data.append(user_say_date[2])        return data    else:        data = []        return data

下面这个就可以解释上面的一些疑问,为什么需要状态,我这里对传入日期做了判断,因为用户可以输入一个日期而不是范围。

下面的函数就可以生成一个用户输入的时间列表,并且带有状态。然后列表就会作为上面代码函数的入参。

#日期处理def CurDate(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

测试:

输入一个日期,如下图。
这里写图片描述

测试范围日期,如下图

这里写图片描述

你可能感兴趣的文章
一名女程序员对iOS的想法
查看>>
西班牙现新型电费退款网络诈骗 侨胞需谨防上当
查看>>
ArrayList
查看>>
Angular学习笔记(一) - 之安装教程
查看>>
Spring Websocket实现文本、图片、声音、文件下载及推送、接收及显示(集群模式)...
查看>>
最严新规发布 网络短视频平台该如何降低违规风险? ...
查看>>
云服务器ECS出现速度变慢 以及突然断开怎么办?
查看>>
208亿背后的“秘密”
查看>>
Android系统自带样式(android:theme)解析
查看>>
全志A33开发板Linux内核定时器编程
查看>>
全栈必备 敏捷估点
查看>>
一个爬虫小技巧
查看>>
作为一名合格的JAVA架构师需要点亮哪些技能树?
查看>>
为什么短视频会让人刷不停?背后也许用了这套技术
查看>>
Kubernetes 在知乎上的应用
查看>>
Fescar 发布 0.3.1 版本, 支持 ZooKeeper 注册中心
查看>>
【死磕 Spring】----- IOC 之解析 bean 标签:BeanDefinition
查看>>
Java部署环境搭建(Linux)
查看>>
4.1 在SELinux中客体类存在的目的
查看>>
E-HPC支持多队列管理和自动伸缩
查看>>