web-dev-qa-db-ja.com

Python-日付の文字列表現をISO 8601に変換する

Pythonでは、このような文字列をどのように変換できますか:

2010年12月16日(木)12:14:05 +0000

タイムゾーンを維持しながら、ISO 8601形式に準拠していますか?

元の日付は文字列であり、出力もdatetimeなどの文字列ではなく、文字列でなければなりません。

ただし、サードパーティのライブラリを使用しても問題ありません。

45
Alon Gubkin

dateutil を使用:

import dateutil.parser as parser
text = 'Thu, 16 Dec 2010 12:14:05 +0000'
date = parser.parse(text)
print(date.isoformat())
# 2010-12-16T12:14:05+00:00
77
unutbu

Python inbuilt datetime パッケージには、datetimeオブジェクトをisoformatに変換するメソッドが組み込まれています。以下に例を示します。

>>>from datetime import datetime
>>>date = datetime.strptime('Thu, 16 Dec 2010 12:14:05', '%a, %d %b %Y %H:%M:%S')
>>>date.isoformat()

出力は

'2010-12-16T12:14:05'

この回答は、主にUTCで働いており、タイムゾーンについて心配する必要のない人向けに作成しました。最後の6文字を削除して、その文字列を取得できます。

Python 2はタイムゾーンの内部ライブラリをあまりサポートしていません。詳細と解決策については、stackoverflowで this answer を参照できます。

20
Sumit Kumar