首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试日期?

问如何测试日期?
EN

Stack Overflow用户
提问于 2020-06-29 18:06:30
回答 1查看 18关注 0票数 0

你能告诉我为什么这个补偿代码不能工作吗?

代码语言:javascript
复制
DateStart= '16/07/2020'
DateEnd  = '24/10/2020'
   
for i in range(14,124):
    date_depart = date.today()+timedelta(days=i)
    date_retour = date.today()+timedelta(days=(i+row['duree_sejour']))
        
    if (date_depart.strftime('%d/%m/%Y') >=datetime.strptime(DateStart, '%d/%m/%Y').strftime('%d/%m/%Y')) \
    and (date_retour.strftime('%d/%m/%Y') >=datetime.strptime(DateEnd, '%d/%m/%Y').strftime('%d/%m/%Y')):
        print("Depearture: {}. Back: {}.".format(date_depart.strftime('%d/%m/%Y'),date_retour.strftime('%d/%m/%Y')))

它返回以下输出:

截止日期: 18/07/2020。返回: 25/07/2020。发布时间: 19/07/2020。返回: 26/07/2020。截止日期: 20/07/2020。返回: 27/07/2020。发布时间: 21/07/2020。返回: 28/07/2020。发布时间: 22/07/2020。返回: 29/07/2020。发布时间: 23/07/2020。返回: 30/07/2020。发布时间: 24/07/2020。返回: 31/07/2020。发布时间: 18/08/2020。返回: 25/08/2020。发布时间: 19/08/2020。返回: 26/08/2020。发布时间: 20/08/2020。返回: 27/08/2020。发布时间: 21/08/2020。返回: 28/08/2020。发布时间: 22/08/2020。返回: 29/08/2020。发布时间: 23/08/2020。返回: 30/08/2020。发布时间: 24/08/2020。返回: 31/08/2020。发布时间: 18/09/2020。返回: 25/09/2020。发布时间: 19/09/2020。返回: 26/09/2020。截止日期: 20/09/2020。返回: 27/09/2020。发布时间: 21/09/2020。返回: 28/09/2020。发布时间: 22/09/2020。返回: 29/09/2020。发布时间: 23/09/2020。返回: 30/09/2020。截止日期: 17/10/2020。返回: 24/10/2020。截止日期: 18/10/2020。返回: 25/10/2020。截止日期: 19/10/2020。返回: 26/10/2020。截止日期: 20/10/2020。返回: 27/10/2020。截止日期: 21/10/2020。返回: 28/10/2020。截止日期: 22/10/2020。返回: 29/10/2020。截止日期: 23/10/2020。返回: 30/10/2020。截止日期: 24/10/2020。返回: 31/10/2020。

为什么我们直接从'24/07/2020‘日期传递到'18/08/2020'?非常感谢。提奥

EN

回答 1

Stack Overflow用户

发布于 2020-06-29 18:58:08

您正在str对象之间进行丰富的比较,这并不包含用于按时间顺序比较日期的适当逻辑。相反,您可以执行以下操作:

代码语言:javascript
复制
from datetime import date, datetime, timedelta

date_start = date(2020, 7, 16)
date_end = date(2020, 10, 24)


for i in range(14, 124):
    date_depart = (datetime.today()+timedelta(days=i)).date()
    date_retour = (datetime.today()+timedelta(days=(i+row['duree_sejour']))).date()

    if (date_depart >= date_start) and (date_retour <= date_end):
        print("Depearture: {}. Back: {}.".format(date_depart, date_retour))

在这里,我们构建datetime.Date对象,它对<、>、<= >=等有明确的含义-它理解日期的年表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62635776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档