2

私のコンピューターは太平洋時間で実行されています(したがって、datetime.datetime.fromtimestamp(0)は私に1969-12-31 16:00:00を与えます)。私の問題は、Pythonでタイムゾーン対応の日時オブジェクトが与えられた場合、UNIXタイムスタンプ(つまりUTCタイムスタンプ)を取得したいということです。そうするための最良の方法は何ですか?

4

1 に答える 1

8
import calendar
import datetime
import pytz

d = datetime.datetime.now(pytz.timezone('America/Los_Angeles'))
# d == datetime.datetime(2012, 7, 10, 1, 6, 36, 37542, tzinfo=<DstTzInfo 'America/Los_Angeles' PDT-1 day, 17:00:00 DST>)

ts = calendar.timegm(d.utctimetuple())
# ts == 1341907596

# test with UTC epoch:

d = datetime.datetime(1969, 12, 31, 16, 0, 0, 0, pytz.timezone('America/Los_Angeles'))
# d == datetime.datetime(1969, 12, 31, 16, 0, tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>)

ts = calendar.timegm(d.utctimetuple())
# ts == 0
于 2012-07-10T08:05:36.643 に答える