Python 日期时间:检查日期是否在1周内

Python 日期时间:检查日期是否在1周内,python,datetime,timedelta,Python,Datetime,Timedelta,我想做的是查看date是否在currdate1周内 from datetime import datetime, timedelta import yagmail year = datetime.now().year month = datetime.now().month day = datetime.now().day currdate = '{}-{}-{}'.format(year, month, day) currdate = datetime.strptime(currdate,

我想做的是查看
date
是否在
currdate
1周内

from datetime import datetime, timedelta
import yagmail

year = datetime.now().year
month = datetime.now().month
day = datetime.now().day

currdate = '{}-{}-{}'.format(year, month, day)
currdate = datetime.strptime(currdate, '%Y-%m-%d')

date = '2018-04-01'

days = currdate - timedelta(int(date[-2:]))
days = str(days)
print(days)

if days[8:11] == '07':
    yag = yagmail.SMTP("#########@gmail.com", "######
)) content=[“你的一个家庭作业在一周内到期!”] 发送(“#############@gmail.com”,“作业即将到期!”,内容) 其他: 打印('它不是')

但它显示:

2018-04-07 00:00:00

It Isnt't

我不知道为什么。因为
天[8:11]
07
它不是
07
。它是
07
(注意后面的空格)

以下更改将起作用:

if int(days[8:11]) == 7:

它不是
07
。它是
07
(注意尾随空格)

以下更改将起作用:

if int(days[8:11]) == 7:

在[8:11]天内,您将获得以下输出

>>> days[8:11] 
'08 '
因此,如果你想使用相同的方法,你应该使用days[8:10]='07',因为它不会在最后有额外的空间

>>> days[8:10] 
'08'
所以你应该使用
如果天[8:10]=“07”:

对于天[8:11],您将获得以下输出

>>> days[8:11] 
'08 '
因此,如果你想使用相同的方法,你应该使用days[8:10]='07',因为它不会在最后有额外的空间

>>> days[8:10] 
'08'
所以你应该使用
如果天[8:10]=='07':

我想你启动datetime.now()时的第一行只是为了测试,但不要这样做,因为它可能会在不同的日子结束(如果你在午夜前后的毫秒运行…),这将在这方面工作得更好

now = datetime.datetime.now()
year = now.year
month = now.month
day = now.day
不管怎样,请阅读datetime timedelta。只要让你有逻辑就可以了。

导入日期时间
测试日期字符串=“2018-04-10”
d=datetime.datetime.strtime(测试日期字符串,“%Y-%m-%d”)
now=datetime.datetime.now()
delta=d-现在
elif delta.days<7:
打印(“您还有不到7天的时间”)

我想当您启动datetime.now()三次时,您的第一行只是为了测试目的,但不要这样做,因为它可能会在不同的日子结束(如果您正好在午夜前后的毫秒运行…),这将在这方面起到更好的作用

now = datetime.datetime.now()
year = now.year
month = now.month
day = now.day
不管怎样,请阅读datetime timedelta。只要让你有逻辑就可以了。

导入日期时间
测试日期字符串=“2018-04-10”
d=datetime.datetime.strtime(测试日期字符串,“%Y-%m-%d”)
now=datetime.datetime.now()
delta=d-现在
elif delta.days<7:
打印(“您还有不到7天的时间”)

我将创建一个函数,您可以将日期作为字符串传递。类似如下:

import datetime

def check_if_less_than_seven_days(x):
    d = datetime.datetime.strptime(x, "%Y-%m-%d") # Add .date() if hour doesn't matter
    now = datetime.datetime.now()                 # Add .date() if hour doesn't matter
    return (d - now).days < 7

if check_if_less_than_seven_days("2018-04-18"):
    print('Do something')  # This will not print

if check_if_less_than_seven_days("2018-04-14"): 
    print('Do something')  # This will print

我将创建一个函数,您可以将日期作为字符串传递。类似如下:

import datetime

def check_if_less_than_seven_days(x):
    d = datetime.datetime.strptime(x, "%Y-%m-%d") # Add .date() if hour doesn't matter
    now = datetime.datetime.now()                 # Add .date() if hour doesn't matter
    return (d - now).days < 7

if check_if_less_than_seven_days("2018-04-18"):
    print('Do something')  # This will not print

if check_if_less_than_seven_days("2018-04-14"): 
    print('Do something')  # This will print
timedelta(int(日期[-2:])
timedelta(int(日期[-2:]))