61

私は utc タイムスタンプを提供するコードを使用しており、それらを適切な日時に変換したいと考えています。残念ながら、pytz で単純なケースをテストすると、datetime に 6 時間 (UTC に対する CST オフセット) が追加されます。他のタイムゾーンとの差も計算しているため、タイムゾーンデータを正確に保つ必要があります。utc タイムスタンプを utc 日時に変換する理由と方法はありますか?

In [1]: import pytz

In [2]: from datetime import datetime

In [3]: import time

In [4]: datetime.fromtimestamp(time.mktime(datetime(7,1,1, tzinfo=pytz.UTC).timetuple()), tz=pytz.UTC)
Out[4]: datetime.datetime(2007, 1, 1, 6, 0, tzinfo=<UTC>)

In [5]: datetime.fromtimestamp(time.mktime(datetime(7,1,1).utctimetuple()), tz=pytz.UTC)
Out[5]: datetime.datetime(2007, 1, 1, 6, 0, tzinfo=<UTC>)

In [6]: datetime.fromtimestamp(time.mktime(datetime(7,1,1).utctimetuple()))
Out[6]: datetime.datetime(2007, 1, 1, 0, 0)
4

2 に答える 2

26

うーん、ここで答えを見つけました:Unix時間に変換するときにタイムゾーン(UTC)を指定する方法は?(パイソン)

In [101]: ts = calendar.timegm(datetime(2010, 7, 1, tzinfo=pytz.utc).timetuple())

In [102]: datetime.fromtimestamp(ts, tz=pytz.utc)
Out[102]: datetime.datetime(2010, 7, 1, 0, 0, tzinfo=<UTC>)
于 2011-05-11T13:59:56.370 に答える