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 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档