26

私は一緒に2回追加しようとしています。ISO 8601 タイム スタンプは「1984-06-02T19:05:00.000Z」で、秒に変換したいと考えています。Python モジュールを使ってみましiso8601たが、パーサーに過ぎません。

助言がありますか?

4

3 に答える 3

28

エポックからの秒数を取得したい場合は、 を使用python-dateutilしてdatetimeオブジェクトに変換し、strftimeメソッドを使用して秒数に変換できます。そのようです:

>>> import dateutil.parser as dp
>>> t = '1984-06-02T19:05:00.000Z'
>>> parsed_t = dp.parse(t)
>>> t_in_seconds = parsed_t.timestamp()
>>> t_in_seconds
'455051100'

だから、あなたはそこにいた途中でした:)

于 2014-12-02T09:53:43.657 に答える
24

日付はRFC 3339 形式の UTC 時間です。stdlib のみを使用して解析できます。

from datetime import datetime

utc_dt = datetime.strptime('1984-06-02T19:05:00.000Z', '%Y-%m-%dT%H:%M:%S.%fZ')

# Convert UTC datetime to seconds since the Epoch
timestamp = (utc_dt - datetime(1970, 1, 1)).total_seconds()
# -> 455051100.0

Python で datetime.date を UTC タイムスタンプに変換するも参照してください。

ISO 8601 形式に変換するにはどうすればよいですか?

POSIX タイムスタンプを元に変換するには、そこから UTC 日時オブジェクトを作成し、.strftime()メソッドを使用してフォーマットします。

from datetime import datetime, timedelta

utc_dt = datetime(1970, 1, 1) + timedelta(seconds=timestamp)
print(utc_dt.strftime('%Y-%m-%dT%H:%M:%S.%fZ'))
# -> 1984-06-02T19:05:00.000000Z

注: 小数点以下 6 桁 (マイクロ秒) を出力します。3 桁を取得するには、マイクロ秒を小数点以下 2 桁にフォーマットする (実際には、マイクロ秒を 10 マイクロ秒に変換する) を参照してください。

于 2014-12-02T14:37:06.440 に答える