2011-09-04 69 views
2

我對Python很陌生,但我需要將項目從PHP遷移到Python(在GAE環境中運行),我需要將所有數據從一個數據庫移動到GAE。挑戰在於將數據字符串寫入日期時間對象。 日期存儲爲字符串,其中使用PHP的模式「風雲(h:i:s A)」來創建「 因此,每個日期如下所示: 2005年7月31日星期日(02:05:50 PM)在Python(GAE)中將字符串轉換爲datetime對象?

我已經查看了Python文檔,並且我可以看到datetime.strptime可以完成這項工作,但是... 它沒有「th」,「rd」和「st」參數,結局。也可能有其他一些問題。

你能告訴我什麼? 我可以使用RegExp並刪除所有不需要的垃圾,或者有什麼方法可以直接從這樣的字符串創建日期時間對象?

預先感謝您。

回答

3

如果你可以使用dateutil與GAE,然後

In [70]: import dateutil.parser as parser 
In [71]: parser.parse('Sunday 31st of July 2005 (02:05:50 PM)',fuzzy=True) 
Out[71]: datetime.datetime(2005, 7, 31, 14, 5, 50) 

否則,你將不得不依靠re操縱日期字符串成格式strptime可以解析。

In [89]: datetime.datetime.strptime(re.sub(r'\w+ (\d+)\w+ of(.+)\s+\((.+) \)',r'\1 \2 \3','Sunday 31st of July 2005 (02:05:50 PM)'),'%d %B %Y %I:%M:%S %p') 
Out[89]: datetime.datetime(2005, 7, 31, 14, 5, 50) 
+0

謝謝!但不幸的是,GAE的SDK沒有dateutil.parser模塊。 當我嘗試你的第二個例子時,它會觸發 comment.date = datetime.datetime.strptime(re.sub(r'\ w +(\ d +)\ w + of(。+)\ s + \((。+)\) ',r'\ 1 \ 2 \ 3',remove_html_tags(_date)),'%d%B%Y%I:%M:%S%p') 文件「C:\ Python27 \ lib \ _strptime.py 「328行,在_strptime data_string [found.end():]) ValueError:未轉換的數據仍然是:___________ – momijigari

+0

@momijigari:請發佈'repr(remove_html_tags(_date))'。 – unutbu

+0

@momijigari:也應該有一種方法來[與GAE安裝dateutil](http://stackoverflow.com/questions/631035/python-tzinfo-and-daylight-time)。不幸的是,這個鏈接並沒有顯示如何,但它確實意味着它是可能的。 – unutbu