【问题标题】:Why does strptime() append a time value even when not specified?为什么即使未指定 strptime() 也会附加时间值?
【发布时间】:2020-02-09 01:19:22
【问题描述】:

我有以下 Python 代码:

print ('2020-02-09')
print(datetime.datetime.strptime('2020-02-09'], '%Y-%m-%d'))

产生

2020-02-09
2020-02-09 00:00:00

有没有更好的不返回秒数的函数选择? IOW,如何在不评估时间分量的情况下比较这两个值?例如:

if datetime.datetime.today().date() == datetime.datetime.strptime('2020-02-09'], '%Y-%m-%d'):

为了澄清,我的目标是将日期(无时间值)作为属性存储在 JSON 文件中,然后在运行时将其与 datetime.now().date() 或 datetime.today().date( )。

【问题讨论】:

  • 您问题中的代码有解析错误。您能否发布您正在执行的实际代码?
  • @NateEldredge 是实际代码,但 '2020-02-09' 是 JSON 属性。

标签: datetime python-3.7 strptime


【解决方案1】:

怎么样:

from datetime import datetime as dt

if dt.today().date() == dt.strptime('2020-02-09', '%Y-%m-%d').date():

注意在第二个操作数后面包含.date()

【讨论】:

    【解决方案2】:

    您可以只比较两个函数的日期部分: 只需在

    末尾添加 date()
    datetime.datetime.strptime('2020-02-09', '%Y-%m-%d').date()
    

    【讨论】:

      【解决方案3】:

      我想太多了,也错过了将 .date() 链接到函数的能力。感谢您为我澄清这一点。

      这是我决定去的:

      #example date for JSON attribute
      data['lastWritten'] = '2020-02-09'
      if str(datetime.datetime.today().date()) == data['lastWritten']: 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-12
        • 2018-06-23
        • 2022-01-13
        相关资源
        最近更新 更多