【问题标题】:How to check the date is empty using python?如何使用python检查日期是否为空?
【发布时间】:2019-10-13 05:35:39
【问题描述】:

startdateenddate 值来自 jenkin 到 lambda。 在这段代码中,我尝试使用 event["start_date"] and event["end_date"] 获取价值,它工作正常,但如果 startdateenddate 不可用,则代码应自动采用今天和昨天的日期。

我是python新手,有人可以帮忙吗?

我尝试如下,但出现错误。 如果我提到“开始日期和结束日期是无”并将两个值都设置为无,那么它可以工作,但我需要在代码中实现提到,因为我正在使用 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'

【问题讨论】:

    标签: python python-3.x amazon-web-services aws-lambda


    【解决方案1】:

    使用try-except 块。

    例如:

    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)
    

    【讨论】:

      【解决方案2】:

      这可能不是你想要的:

       if (startdate and enddate) == "":
      

      怎么样:

      if startdate == '':
          startdate = datetime.date.today()
      if enddate == '':
          enddate = startdate - datetime.timedelta(days = 1)
      

      【讨论】:

        【解决方案3】:

        改变这一行

        if (startdate and enddate) == "":
        

        if startdate == "" and enddate == "":
        

        另一种方式:

        if not startdate and not enddate: # PEP 8 recommended
        

        【讨论】:

          【解决方案4】:

          我在使用 python AWS lambda 时尝试了其他方式,它可以工作。

            if "start_date" in event:
                  startdate = datetime.datetime.strptime(event["start_date"], dateformat) 
                  enddate = datetime.datetime.strptime(event["end_date"], dateformat) 
          

          【讨论】:

            猜你喜欢
            • 2021-11-13
            • 1970-01-01
            • 2013-10-31
            • 2020-08-02
            • 1970-01-01
            • 2011-01-25
            • 1970-01-01
            • 2010-10-13
            相关资源
            最近更新 更多