m0_70680242 2022-07-12 17:01 采纳率: 82.2%
浏览 17
已结题

关于#while#和datatime模块的问题,如何解决?

将两个时间点之间所有的天数输出到一个列表


import datetime
def get_date_range(begin,end):
    need_date = []
    append_timedate = datetime.timedelta(days=1)#用于增殖变量
    while begin <= end:
        need_date.append(begin)
        begin_obj = datetime.datetime.strptime(begin,'%Y-%m-%d')#将输入封包成时间元组
        begin = (begin_obj+append_timedate).strftime('%Y-%m-%d')#加上一天后解封
    return need_date
begin_date = "2021-4-28"
end_date = "2021-5-3"
date_list = get_date_range(begin_date,end_date)
print(date_list)

输出结果为2021直接满到12-31
做了断点,bug测试时发现while当时间大于该值时仍然判定为True
故写以下代码测试

begin_date = "2021-5-1"
end_date = "2021-5-3"
if_outof_data = "2021-5-5"
if begin_date <= end_date:
    print("证实可被对比")
if if_outof_data <= end_date:
    print("若输出此结果则证明data大小判断无效")

结果为

"C:\Program Files\Python310\python.exe" G:/python基础题20道开始/025.py
证实可被对比

Process finished with exit code 0

离谱

  • 写回答

2条回答 默认 最新

  • 快乐小土狗 2022-07-12 17:10
    关注

    加两个0就好了:end_date = "2021-05-03"
    begin = (begin_obj+append_timedate).strftime('%Y-%m-%d')得到的格式是yyyy-mm-dd,月数是两位数的,01,02,03这样的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月12日
  • 已采纳回答 7月12日
  • 创建了问题 7月12日

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用