2016-04-28 13 views
2
奇怪的行爲

可能有人能解釋我爲什麼用 'T' 這種行爲參數與dateutil.parser

from dateutil.parser import parse 
parse('t') 

Out[4]: datetime.datetime(2016, 4, 28, 0, 0)

當我除了:

parse('z') 

Traceback (most recent call last):
[...]
ValueError: Unknown string format

回答

1

t是一個特例,因爲它是"jump" values之一(解析時的用法是here):

JUMP = [" ", ".", ",", ";", "-", "/", "'", 
     "at", "on", "and", "ad", "m", "t", "of", 
     "st", "nd", "rd", "th"] 

換句話說,解析t,m不會導致「未知字符串格式」錯誤。

z特例太多,因爲它可以有一個special meaning - 「祖魯」 /「零點偏移」(這是ISO 8601 standard的一部分),但是這並不影響結果了,parse("q")parse("u")會也會產生「未知字符串格式」錯誤。


兩個parse("t")parse("z")會導致進入 「模糊」 模式的默認/當前日期:

>>> parse('t', fuzzy=True) 
datetime.datetime(2016, 4, 28, 0, 0) 
>>> parse('z', fuzzy=True) 
datetime.datetime(2016, 4, 28, 0, 0) 
+1

https://github.com/dateutil/dateutil/blob/master/dateutil/parser .py#L251 你給了我答案,跳轉參數 – And0rian

+0

隨着你的編輯它更好 – And0rian

+1

@ And0rian是的,沒有「跳轉」部分的答案是不完整的。感謝你,你已經明白了這一點。 – alecxe