我不明白为什么下面的代码减去一个小时的 UNIX 纪元时间戳(在时区 UTC+1 中):
import datetime
import pytz
start_dt = datetime.datetime.fromtimestamp( 1362268800 , pytz.utc )
print start_dt
# prints datetime.datetime(2013, 3, 3, 0, 0, tzinfo=<UTC>)
print int( start_dt.strftime("%s") )
# prints: 1362265200 (which is 2013-03-02T23:00Z ) <--- I expected 1362268800
print start_dt.strftime("%Y-%m-%dT%H:%M:%SZ")
# prints: 2013-03-03T00:00:00Z
我已经通过使用解决了我的问题calendar.timegm( start_ts.timetuple() )
,但我从根本上想知道上面的代码有什么问题,以及如何创建 UTC 格式的 datetime 对象以及 strftime 将在哪里打印纪元时间戳。
根据 python 文档,不允许使用“%s”。如果它导致令人困惑的结果,是否应该明确禁止(即引发异常?)?
使用 python 2.7.3