2011-12-11 69 views
1

我知道有類似這樣的各種帖子。 ,並深知strptimestrftime功能。蟒蛇隱式鑄造字符串到日期時間對象

我的問題有點不同。

什麼是最簡單的方法在Python中隱式地將字符串轉換爲日期/日期對象。

或者明確地說,一個函數將接受代表日期或日期對象的字符串。

到SQL date_object = 'string_of_date'

類似我想這

cast_date=lambda x:x if type(x)=='datetime' else strptime(x,'%%%')#dosen't really work 
cast_date=lambda x:strptime(str(x),'%%%') #edit 

或類似的工作,但如果不存在,而我使用的東西本地人。

謝謝

+1

,請不要使用 「如果類型(x)的==東西」(絕對不是「如果類型(x)的==一些字符串「,這將永遠失敗) - 這可能仍然是一些舊的在線教程中的剩餘,但請學習首選成語」if isinstance(x,sometype)「。 (嘿!我和Raymond Hettinger一樣聰明!) – PaulMcG

回答

0

在Python中沒有本地日期時間轉換。你的小幫手功能看起來是一種合理的方法。請考慮使用isinstance而不是確切的類型檢查(以允許datetime的子類)。

+0

感謝您的幫助,在Python中處理日期更具pythonic方式會更好。 – sinaiy

+0

@sinaiy我很高興能有所幫助:-) –

4

您可能想看看dateutil模塊。它有一個很棒的日期時間分析器。

>>> from dateutil.parser import parse 
>>> print parse("1:00PM") 
2011-12-11 13:00:00 
>>> print parse("1/1/2008") 
2008-01-01 00:00:00 
>>> print type(parse("1/1/2008")) 
<type 'datetime.datetime'> 

再加上連同類型檢查這樣的:

my_datetime = parse(item) if isinstance(item, str) or isinstance(item, unicode) else item