web-dev-qa-db-ja.com

Pythonでの日付時刻の解析..?

VARIOUS形式の文字列としてのdatetimeを受け入れるシステム(Pythonで開発)があり、parseそれらを使用する必要があります。現在のdatetime文字列形式は次のとおりです。

Fri Sep 25 18:09:49 -0500 2009

2008-06-29T00:42:18.000Z

2011-07-16T21:46:39Z

1294989360

今、私はgeneric parserが必要です。これは、適切な日時オブジェクトのこれらの日時形式のいずれかを変換できます...

それ以外の場合は、個別に解析する必要があります。そのため、それらを個別に解析する方法も提供してください(汎用パーサーがない場合)。

42
Ramandeep Singh

@TimPietzckerが示唆したように、dateutilパッケージは行くべき方法であり、最初の3つの形式を正しく自動的に処理します。

>>> from dateutil.parser import parse
>>> parse("Fri Sep 25 18:09:49 -0500 2009")
datetime.datetime(2009, 9, 25, 18, 9, 49, tzinfo=tzoffset(None, -18000))
>>> parse("2008-06-29T00:42:18.000Z")
datetime.datetime(2008, 6, 29, 0, 42, 18, tzinfo=tzutc())
>>> parse("2011-07-16T21:46:39Z")
datetime.datetime(2011, 7, 16, 21, 46, 39, tzinfo=tzutc())

Unixtime形式は注目されているようですが、幸いなことに標準のdatetime.datetimeはタスクを実行しています:

>>> from datetime import datetime
>>> datetime.utcfromtimestamp(float("1294989360"))
datetime.datetime(2011, 1, 14, 7, 16)

4つの形式すべてを処理する関数を作成するのはかなり簡単です。

from dateutil.parser import parse
from datetime import datetime

def parse_time(s):
    try:
        ret = parse(s)
    except ValueError:
        ret = datetime.utcfromtimestamp(s)
    return ret
57
Kimvais

dateutil パッケージを調べる必要があります。

15
Tim Pietzcker