【问题标题】:how to add one day in 'yyyy-mm-dd' format in python?如何在python中以'yyyy-mm-dd'格式添加一天?
【发布时间】:2020-06-17 15:31:06
【问题描述】:

我有这个字符串'2019-01-11',在年-月-日,我想在这个日期上加一天,并在python中将其转换为日期格式。

我尝试将其转换为日期格式,以便我可以使用 'timedelta' 类为其添加一天。

date_1 = datetime.datetime.strptime('2019-01-11', "%y-%m-%d")
date_1 =date_1 + datetime.timedelta(days=1)

但我在第 1 行得到了这个错误。

raise ValueError("time data %r does not match format %r" %
ValueError: time data '2019-01-11' does not match format '%y-%m-%d'

【问题讨论】:

  • 查看strftime.org - 与编写此问题相比,您发现需要%Y 而不是%y 所花费的时间更少;-)

标签: python python-datetime


【解决方案1】:

你要的格式是:

date_1 = datetime.strptime('2019-01-11', "%Y-%m-%d")

(大写“Y”)

【讨论】:

    【解决方案2】:

    四位数年份是%Y。见文档:https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes

    >>> datetime.datetime.strptime('2019-01-11', "%Y-%m-%d") + datetime.timedelta(days=1)
    datetime.datetime(2019, 1, 12, 0, 0)
    

    另请注意,您的原始代码中有几个拼写错误 - 第一行末尾有一个随机分号,第二行引用 date1 而不是 date_1

    【讨论】:

      【解决方案3】:

      在过去的 5 年中,我一直在使用 pandas TimestampTimedelta 来处理与日期相关的所有内容。一旦某些内容采用时间戳格式,就可以将其导出为日期时间:

      In[1]:  from pandas import Timestamp, Timedelta
      In[2]:  x=Timestamp("2022-10-31") + Timedelta(1, unit="days"))
      In[3]:  x=x.date()
      Out[3]: datetime.date(2022, 11, 1)
      

      如果它保存为Timestamp 格式,则可以打印为字符串:

      In[3]:  x=Timestamp("2022-10-31") + Timedelta(1, unit="days")
      In[4]:  f"{x:%Y-%m-%d}"
      Out[4]: 2022-11-01
      

      【讨论】:

        猜你喜欢
        • 2013-04-07
        • 1970-01-01
        • 1970-01-01
        • 2013-09-14
        • 2014-04-07
        • 2016-01-02
        • 1970-01-01
        • 2021-04-19
        • 1970-01-01
        相关资源
        最近更新 更多