2014-03-29 42 views
1

我想一個字符串轉換爲時間值轉換,字符串被解析爲這樣:操縱日期時間的Python

Metatime = datetime.datetime.strptime(metadata.get("FileModifyDate"), "%y:%m:%d %H:%M:%S") 

凡metadata.get返回是這樣的:

2012:11:19 14:53:44-05:00 

我有另一個DATATIME元我想與之比較,所以格式應該是相同的。其他datetime元素是這樣的:

(datetime.datetime(2014, 3, 26, 23, 22, 21) 

我該如何格式化東西才能做邏輯比較?

+3

爲什麼你想比較字符串而不是'datetime'對象? – Elisha

+0

^這。 「我怎樣才能格式化一些東西來做一個合乎邏輯的比較?」通過將它們留作日期時間對象,並使用邏輯比較運算符'<', '==', '>'... –

+0

metadata.get不返回日期時間,元數據是json映射,並且2012:11:19 14:53:44-05:00被格式化作爲字符串 –

回答

0

Python的標準datetime.strptime()方法不支持以hh:mm格式解析時區信息。這是一個開放的feature request

同時,您可以使用以下解決方法:

>>> FileModifyDate = '2012:11:19 14:53:44-05:00' 
>>> datetime.strptime(FileModifyDate.replace(':', ''), '%Y%m%d %H%M%S%z') 
datetime.datetime(2012, 11, 19, 14, 53, 44, tzinfo=datetime.timezone(datetime.timedelta(-1, 68400))) 
>>> print(_) 
2012-11-19 14:53:44-05:00 

請注意,您需要我們的Python版本3.3或更高版本的這個工作。現在

,如果你想要的結果比較

>>> another_date = datetime(2014, 3, 26, 23, 22, 21) 

你需要知道該日期是什麼時區如果是在UTC - 做

>>> file_date = datetime.strptime(FileModifyDate.replace(':', ''), '%Y%m%d %H%M%S%z') 
>>> another_date.replace(tzinfo=timezone.utc) > file_date 
True 

如果是在某些其他區域,您需要使用第三方庫(如pytz)將其轉換爲知曉的實例,然後才能進行比較。