Python 日付文字列のフォーマットを datetime で変更する

>>> t = fdp.entries[0].issued
>>> t
u'Thu, 07 Feb 2013 08:40:00 +0900'
>>> type(t)
<type 'unicode'>

feedparser で取ってきたエントリの日付は unicode 型だった。これの表記を変更したい。
datetime モジュールを使って変換ができると聞いてやってきました。

>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 2, 7, 14, 9, 28, 729000)

試しに現在時刻の datetime.datetime オブジェクト(?)を表示してみる。ほうほう。

>>> ti = str(t)
>>> ti
'Thu, 07 Feb 2013 08:40:00 +0900'
>>> type(ti)
<type 'str'>

unicode 型の文字列をそのまま使おうとしたらエラーになったので str 型に変換する

>>> datetime.datetime.strptime(ti, "%a, %d %b %Y %H:%M:%S +0900")
datetime.datetime(2013, 2, 7, 8, 40)

こうすると日付の文字列を datetime.datetime オブジェクトにできる。

>>> tid = datetime.datetime.strptime(ti, "%a, %d %b %Y %H:%M:%S +0900")
>>> type(tid)
<type 'datetime.datetime'>

型を確認

>>> tid.strftime("%Y/%m/%d %H:%M:%S")
'2013/02/07 08:40:00'

strftime メソッドで好みのフォーマットに整形できた。やったー。

for i in range(len(urls)):
	fdp = feedparser.parse(urls[i])
	# print fdp.feed.title
	# print fdp.entries[0].title
	t = fdp.entries[0].issued
	ts = str(t)
	td = datetime.datetime.strptime(ts, "%a, %d %b %Y %H:%M:%S +0900")
	print td.strftime("%Y/%m/%d %H:%M:%S")
	print ''