我要做的是查看date
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
。
答案 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'