example = datetime.datetime(2014, 8, 19, 14, 18, 49, 435413, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=-240, name=None))
datetime.datetime.fromtimestamp(time.mktime(example.timetuple()))
datetime.datetime(2014, 8, 19, 15, 18, 49)
你可以看到,当我构建example
时,它是14:18(下午2:18)。当我将它转换为utc时代,然后再回来时,它是15:18(下午3:18)。
我正在使用psycopg2' FixedOffsetTimezone
,因为此行值来自数据库。
尝试在UTC中执行所有操作会产生更令人困惑的结果。
datetime.datetime.utcfromtimestamp(time.mktime(example.utctimetuple()))
datetime.datetime(2014, 8, 19, 23, 18, 49)
在我的第一个例子中,我的额外时间到了哪里?我怀疑夏令时,夏令时,但我的机器(和Python)产生了正确的日期:
datetime.datetime.now()
datetime.datetime(2014, 8, 19, 14, 49, 21, 2429)
从shell开始:
> date
Tue Aug 19 14:49:49 EDT 2014