27

これはおそらく非常に基本的な質問ですが、ドキュメントを読んだ後でも、それを行う方法がわかりません...

不明な形式の日付を含むPythonの文字列が2つあります。どちらも有効な日時式であることがわかっている場合を除いて、それらがどの形式であるかはわかりません。たとえば、そのうちの1つはISO形式で、もう1つは他の形式である可能性があります。

必要なのは、日付を比較できるようにすることだけです。文字列を比較できるように、文字列を適切な日時オブジェクトに変換する正しい方法は何ですか?

ありがとう!

4

1 に答える 1

34

dateutilモジュールには、さまざまな形式の日付文字列を解析できる日付パーサーがあります。

例えば、

In [13]: import dateutil.parser as parser

In [14]: parser.parse("19970902T090000")
Out[14]: datetime.datetime(1997, 9, 2, 9, 0)

In [15]: import datetime as dt

In [16]: now = dt.datetime.now()

In [17]: now.isoformat()
Out[18]: '2012-11-06T15:08:51.393631'

In [19]: parser.parse('2012-11-06T15:08:51.393631')
Out[19]: datetime.datetime(2012, 11, 6, 15, 8, 51, 393631)

In [20]: parser.parse('November 6, 2012')
Out[20]: datetime.datetime(2012, 11, 6, 0, 0)

一部の日時文字列はあいまいになる可能性があることに注意してください10-09-2003。たとえば、10月9日または9月10日を意味する場合があります。dateutilのようなパラメータがdayfirstありyearfirst、これを処理します。

In [21]: parser.parse("10-09-2003")
Out[21]: datetime.datetime(2003, 10, 9, 0, 0)

In [22]: parser.parse("10-09-2003", dayfirst = True)
Out[22]: datetime.datetime(2003, 9, 10, 0, 0)

In [23]: parser.parse("10-09-03", yearfirst = True)
Out[23]: datetime.datetime(2010, 9, 3, 0, 0)
于 2012-11-06T20:07:49.427 に答える