2

次のような Web ログからのタイムスタンプ文字列があります。

2005 年 6 月 10 日:05:59:05 -0500

それを UNIX タイムスタンプに変換するのが好きです。

Adatetimeで変換できますtime.mktime(datetime.timetuple())

datetimedocsによるとdatetime.strptime()、日時に変換する必要があります。

from datetime import datetime
datetime.strptime("10/Jun/2005:05:59:05 -0500","%d/%b/%Y:%H:%M:%S %z")

少なくとも私の Mac の Python 2.7.2 では、これにより

ValueError: 'z' はフォーマット '%d/%b/%Y:%H:%M:%S %z' の不適切なディレクティブです

そのエラーに関するSOに関する多くの質問を読んだ後、私は試してみることにしましたpython-dateutil:

from dateutil import parser
parser.parse("10/Jun/2005:05:59:05 -0500")

それもうまくいきませんでした:

ValueError: 不明な文字列形式

それで?

4

1 に答える 1

3

を使用dateutilsして変換を行うことができます。次の 2 つの手順が必要です。

>>> import calendar
>>> from dateutil.parser import parse
>>> d = parse('10/Jun/2005:05:59:05 -0500', fuzzy=True)

これにより、日時オブジェクトが作成されます

>>> d
datetime.datetime(2005, 6, 10, 5, 59, 5, tzinfo=tzoffset(None, -18000))

そして、それを UNIX タイムスタンプに変換するには:

>>> ts = calendar.timegm(d.utctimetuple())
>>> print ts
1118401145
于 2013-08-17T22:43:12.040 に答える