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

时间:2018-04-08 19:33:10

标签: python datetime timedelta

我要做的是查看date

后1周内是否currdate
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", "######

&#34)         content = ['你的一个作业将在一周内到期!']         yag.send(' ########## @ gmail.com','家庭作业即将到期!',内容)     其他:         打印(' It Isn \' t')

但它打印出来:

2018-04-07 00:00:00

It Isnt't

我不确定为什么。因为days[8:11]07

4 个答案:

答案 0 :(得分:2)

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

以下更改将有效:

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

答案 1 :(得分:0)

连续几天[8:11],你得到以下输出

>>> days[8:11] 
'08 '

所以你应该使用天[8:10] ==' 07'如果你想使用相同的方法,因为它最后没有额外的空间。

>>> days[8:10] 
'08'

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

答案 2 :(得分:0)

我认为当你启动datetime.now()三次时,你的第一行只是出于测试目的,但不要这样做,因为它可能会在不同的日子结束(如果你在午夜左右的毫秒时间运行它)。在这方面会更好。

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

无论如何,请阅读日期时间timedelta。只是让你理解这一点。 https://docs.python.org/3/library/datetime.html#timedelta-objects

import datetime
test_date_string = "2018-04-10"
d = datetime.datetime.strptime(test_date_string, "%Y-%m-%d")
now = datetime.datetime.now()

delta = d - now
elif delta.days < 7:
    print("You have less then 7 days to go")

答案 3 :(得分:0)

我创建了一个将日期作为字符串传递的函数。像这样:

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

将打印:

'Do something'