2011-10-25 64 views
1

有沒有一種方法可以使用僅使用標準庫模塊的Python中的字符串獲取日期時間感知對象?從字符串中獲取一個知道的日期時間對象

我知道我可以使用dateutil.parser.parse,但不幸的是,這不是一個足夠好的理由將它作爲依賴添加到我的項目中。我已經有mx.DateTime模塊作爲依賴,buuttttt:

>>> dateutil.parser.parse('2011-10-24T06:51:47-07:00') 
datetime.datetime(2011, 10, 24, 6, 51, 47, tzinfo=tzoffset(None, -25200)) 

>>> mx.DateTime.ISO.ParseDateTimeUTC('2011-10-24T06:51:47-07:00') 
<mx.DateTime.DateTime object for '2011-10-24 13:51:47.00' at 29c7e48> 

ParseDateTimeUTC未能檢測到偏移,即使它的文檔中說:

Returns a DateTime instance in UTC reflecting the given ISO 
date. A time part is optional and must be delimited from the 
date by a space or 'T'. Timezones are honored. 
+0

我認爲你誤解了文檔。時區已被授予並用於調整到UTC的時間。由此產生的UTC時間沒有時區,因爲它不再是當地時間。 –

+0

Doh,現在有道理,我沒有看ParseDateTimeUTC打印出來的實際日期時間字符串......如果您將您的評論添加爲答案,我會接受它。謝謝! – hyperboreean

+0

爲了清楚起見,我正在尋找一個stdlib/mx.DateTime解析器,它類似於設置了tzinfo字段的日期時間對象 – hyperboreean

回答

2

mx.DateTime.ISO.ParseDateTimeUTC是做正確的事 - 它正在應用指定的時區來調整到UTC的時間。由此產生的UTC時間沒有時區,因爲它不再是當地時間。

標準Python庫不包含任何混凝土類時區according to the documentation

tzinfo是一個抽象基化酶,這意味着這個類不應 直接實例化。您需要派生一個具體的子類,並且(至少)提供您使用的日期時間方法所需的標準tzinfo方法 的實現。 日期時間模塊不提供 提供tzinfo的任何具體子類。

我一直感到驚訝,他們沒有至少包括UTC類或泛型實現像dateutil的tzoffset

相關問題