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 ''