【问题标题】:Python convert ddmmyy format to valid datePython 将 ddmmyy 格式转换为有效日期
【发布时间】:2013-05-03 23:27:36
【问题描述】:

我试图将日期字符串转换为有效的日期 python 格式,但我得到了一个错误的日期:

>from datetime import datetime
>mydate = '300413' # is 2013-04-30
>print datetime.strptime(mydate,'%d%m%Y')
>0413-02-01 00:00:00

我怎样才能解析到一个有效的日期,这个日期字符串?

【问题讨论】:

  • 您使用的是什么版本的 Python?我依稀记得在添加datetime 后的第一个错误修复中修复了这个错误(蒂姆·彼得斯关于他自己的代码的错误报告总是令人难忘),而且那一定是……十年或更长时间?

标签: python date-format


【解决方案1】:

documentation 中所列,%Y 是四位数年份的代码。您应该使用两位数年份的代码%y

【讨论】:

    【解决方案2】:

    如果您阅读文档中的strptime() and strftime() Behavior%Y 表示:

    年份,世纪为十进制数 [0001,9999]

    但是你给它一个两位数的年份,没有个世纪。

    这应该会引发ValueError。例如,如果您尝试使用 2.5.6、2.7.2、3.2.1 或 3.3.0,您会得到:

    ValueError:时间数据“300413”与格式“%d%m%Y”不匹配

    但是,由于旧版本 Python 中的一个错误,您可能会得到垃圾。

    如果您想要 2 位数的年份,请使用 %y,表示:

    没有世纪的年份作为十进制数 [00,99]。

    【讨论】:

      【解决方案3】:

      尝试:

      print datetime.strptime('300413','%d%m%y')
      2013-04-30 00:00:00
      

      仅将 '%Y' 更改为 '%y'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-27
        • 1970-01-01
        • 2017-10-21
        • 1970-01-01
        • 2019-08-02
        • 1970-01-01
        • 2018-02-12
        相关资源
        最近更新 更多