在我給出的格式中,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