9
這可能是一個非常基本的問題,但閱讀文檔後,我仍然無法弄清楚如何做到這一點...將「未知格式」字符串轉換爲日期時間對象?
我有在Python兩個字符串包含未知格式的日期。我不知道它們是什麼格式,除非我知道這兩種格式都是有效的日期 - 時間表達式。例如,其中一個可能採用ISO格式,另一個採用其他格式。
我需要的是能夠比較日期。將字符串轉換爲適當的日期 - 時間對象以便進行比較的正確方法是什麼?
謝謝!
這可能是一個非常基本的問題,但閱讀文檔後,我仍然無法弄清楚如何做到這一點...將「未知格式」字符串轉換爲日期時間對象?
我有在Python兩個字符串包含未知格式的日期。我不知道它們是什麼格式,除非我知道這兩種格式都是有效的日期 - 時間表達式。例如,其中一個可能採用ISO格式,另一個採用其他格式。
我需要的是能夠比較日期。將字符串轉換爲適當的日期 - 時間對象以便進行比較的正確方法是什麼?
謝謝!
該dateutil module有一個日期解析器,它可以解析多種格式的日期字符串。
例如,
In [13]: import dateutil.parser as parser
In [14]: parser.parse("19970902T090000")
Out[14]: datetime.datetime(1997, 9, 2, 9, 0)
In [15]: import datetime as dt
In [16]: now = dt.datetime.now()
In [17]: now.isoformat()
Out[18]: '2012-11-06T15:08:51.393631'
In [19]: parser.parse('2012-11-06T15:08:51.393631')
Out[19]: datetime.datetime(2012, 11, 6, 15, 8, 51, 393631)
In [20]: parser.parse('November 6, 2012')
Out[20]: datetime.datetime(2012, 11, 6, 0, 0)
注意某些日期時間字符串可以是不明確的:10-09-2003
可能意味着10月9日或9月10日,例如。 dateutil
有一個像dayfirst
和yearfirst
參數來處理這個問題:
In [21]: parser.parse("10-09-2003")
Out[21]: datetime.datetime(2003, 10, 9, 0, 0)
In [22]: parser.parse("10-09-2003", dayfirst = True)
Out[22]: datetime.datetime(2003, 9, 10, 0, 0)
In [23]: parser.parse("10-09-03", yearfirst = True)
Out[23]: datetime.datetime(2010, 9, 3, 0, 0)
我更新了標題;該問題不是「比較日期時間字符串」,而是「將字符串轉換爲可比較的值」。 – 2012-11-06 20:10:09