2016-10-16 37 views
1

我正在嘗試使用Django dateutil.pareser.parse()將日期'2016:09:24 17:08:45'更改爲'2016-09-24 17 :08:45' 。但是當我使用下面的代碼:Django dateutil解析正在將日期更改爲今天的日期

the_timestamp = self.request.query_params.get('timestamp',0) # = '2016:09:24 17:08:45' 
the_parsed_timestamp = dateutil.parser.parse(the_timestamp) 

我得到結果the_parsed_timestamp ='2016-10-16 17:08:45'。 2016-10-16是今天的日期。

爲什麼dateutil.parser.parse用今天的日期替換日期(並且只剩下時間部分)?

+0

你知道,它總是在格式爲 「%Y:%M:%d%H:%M:S」?如果是這樣,不要使用'dateutil.parser',使用'datetime.strptime'。也就是說,這看起來像一個bug,你應該在[dateutil的問題跟蹤器](https://github.com/dateutil/dateutil/issues)上報告它 - 即使該格式不被支持,它也不應該默默無聞。 – Paul

+0

順便說一下,我懷疑現在發生的事情是,它將'2016:09:24'解釋爲'%H:%M:%S',以及'dateutil'的工作方式,如果你給它2個HMS三元組一排,第二個會覆蓋第一個。如果你自己將「2016:09:24」傳遞給解析器,它會給出一個錯誤,因爲「2016」太大了一個小時,所以你實際上只是通過了這個「17:08:45」 – Paul

+0

哦好吧,所以對這種格式解析不夠聰明?我的問題是我不確定日期時間格式是什麼格式,所以我希望我可以使用像dateutil parse這樣的聰明工具來爲我排序。有沒有其他的方法? –

回答

0

您的日期格式錯誤。它應該是:

2016-09-24 

2016:09:24 
+0

是的,我知道。進來的日期格式爲2016:09:24我試圖使用dateutil解析函數將其轉換爲正確的格式。除了改變日期之外,它似乎確實如此! –

+0

@BillNoble格式是否一致?也許你可以使用'datetime.datetime.strptime('2016:09:24 17:08:45','%Y:%m:%d%H:%M:%S')'。 – mariodev

+0

適用於這種特殊情況,但日期格式不一致 –