如何使用python检查日期是否为空?
如何使用python检查日期是否为空?,python,python-3.x,amazon-web-services,aws-lambda,Python,Python 3.x,Amazon Web Services,Aws Lambda,startdate和enddate值来自jenkin到lambda。 在这段代码中,我试图使用event[“start_date”]和event[“end_date”]获取值,它工作正常,但是如果startdate和enddate不可用,那么代码应该自动取今天和昨天的日期 我是python新手,有人能帮我吗 我试了如下,但我得到了错误。 如果我提到“startdate和enddate为none”,并将这两个值都设置为none,那么它可以工作,但我需要实现代码中提到的内容,因为我将AWS lamb
startdate
和enddate
值来自jenkin到lambda。
在这段代码中,我试图使用event[“start_date”]和event[“end_date”]
获取值,它工作正常,但是如果startdate
和enddate
不可用,那么代码应该自动取今天和昨天的日期
我是python新手,有人能帮我吗
我试了如下,但我得到了错误。
如果我提到“startdate和enddate为none”,并将这两个值都设置为none,那么它可以工作,但我需要实现代码中提到的内容,因为我将AWS lambda与python一起使用
import datetime
from datetime import timedelta
dateformat = "%Y-%m-%d"
startdate = datetime.datetime.strptime("", dateformat)
enddate = datetime.datetime.strptime("", dateformat)
# Both startdate and enddate values come from Jenkin to lambda -
event["start_date"] and event["end_date"]
if (startdate and enddate) == "":
startdate = datetime.date.today()
enddate = startdate - datetime.timedelta(days = 1)
print('yesterday : ', enddate)
print('Today : ', startdate)
当前错误输出:
Traceback (most recent call last):
File "variable_value_change.py", line 10, in <module>
startdate = datetime.datetime.strptime("", dateformat)
File "C:\Users\336635743\AppData\Local\Programs\Python\Python37-32\lib\_strptime.py", line 577, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
File "C:\Users\336635743\AppData\Local\Programs\Python\Python37-32\lib\_strptime.py", line 359, in _strptime
(data_string, format))
ValueError: time data '' does not match format '%Y-%m-%d'
回溯(最近一次呼叫最后一次):
文件“variable_value_change.py”,第10行,在
startdate=datetime.datetime.StrTime(“,dateformat”)
文件“C:\Users\336635743\AppData\Local\Programs\Python\Python37-32\lib\ \u strtime.py”,第577行,在_strtime\u datetime中
tt,分数,gmtoff\u分数=\u strTime(数据字符串,格式)
文件“C:\Users\336635743\AppData\Local\Programs\Python\Python37-32\lib\\u strtime.py”,第359行,在\u strtime中
(数据字符串,格式))
ValueError:时间数据“”与格式“%Y-%m-%d”不匹配
更改此行
if (startdate and enddate) == "":
到
另一种方式:
if not startdate and not enddate: # PEP 8 recommended
try:
startdate = datetime.datetime.strptime(event["start_date"], dateformat)
enddate = datetime.datetime.strptime(event["end_Date"], dateformat)
except:
startdate = datetime.date.today()
enddate = startdate - datetime.timedelta(days = 1)
这可能不是您想要的:
if (startdate and enddate) == "":
那么:
if startdate == '':
startdate = datetime.date.today()
if enddate == '':
enddate = startdate - datetime.timedelta(days = 1)
使用
试除
块
Ex:
if not startdate and not enddate: # PEP 8 recommended
try:
startdate = datetime.datetime.strptime(event["start_date"], dateformat)
enddate = datetime.datetime.strptime(event["end_Date"], dateformat)
except:
startdate = datetime.date.today()
enddate = startdate - datetime.timedelta(days = 1)
当我在python AWS lambda上工作时,我尝试了另一种方法,它很有效
if "start_date" in event:
startdate = datetime.datetime.strptime(event["start_date"], dateformat)
enddate = datetime.datetime.strptime(event["end_date"], dateformat)