在我给出的格式中,2014-01-02的日期将由“20140102”表示。这是正确的解析与标准strptime:为什么python的datetime.datetime.strptime('201412','%Y%m%d')不会引发ValueError?
>>> datetime.datetime.strptime("20140102", "%Y%m%d")
datetime.datetime(2014, 1, 2, 0, 0)
在此格式下,“201412”将不是一个有效的日期。 docs表示“%m”指令是“Month为零填充十进制数”。它以“01,02,...,12”为例。 days指令“%d”也应该是零填充的。
基于此,我预计“201412”将是这种格式的无效输入,因此会引发ValueError。相反,它被解释为2014-01-02:
>>> datetime.datetime.strptime("201412", "%Y%m%d")
datetime.datetime(2014, 1, 2, 0, 0)
问题是:有没有办法指定“没有严重零填充只”?或者我在这方面误解了“零填充”这个词?
请注意,这个问题不是关于如何解析这种格式的日期,而是关于理解strptime的行为。
这并不能真正帮助你,但它是有点关系(认为'/'分开场)[解析在python非零填充时间戳(http://stackoverflow.com/问题/ 25279993 /解析非零填充时间戳在Python中) – metatoaster
我认为这取决于函数使用的正则表达式 – kiviak
看起来像Python文档中的一些额外的解释会很好。是否有保证,'strptime(“2014123”,“%Y%m%d”)'总是会给'日期时间(2014年,12年,3年,0年)'或可能'日期时间(2014年, 23,0,0)'? – Matthias