为什么我的python datetime对象(从时间戳创建)不会自动创建为UTC?

时间:2014-07-16 01:59:22

标签: python

我从Javascript获取UTC时间戳并将其传递给我的python代码。我想将该日期存储为日期时间,因此我使用dt = datetime.datetime.fromtimestamp(int(starttime) / 1000)构建它。我检查时间戳,它是在特定日期的UTC时间上午12:00。但是,当我打印出这个新创建的日期时间对象时,它会从前一天打印到19:00。

这里显然存在一些时区问题,但我希望默认值应该始终为UTC(显然我认为是错误的)。如何让它始终在UTC下运行,而不是在游戏中进行一些奇怪的时区转换?

1 个答案:

答案 0 :(得分:2)

fromtimestamp states的文档(强调我的):

  

返回与POSIX时间戳对应的本地日期和时间,例如time.time()返回的日期和时间。如果可选参数tz为None或未指定,则将时间戳转换为平台的本地日期和时间,并且返回的datetime对象是天真的。

因此fromtimestamp确实会为您的本地时区返回一个值(而不是您预期的UTC)。你想要的是utcfromtimestamp

starttime = 1408060800000
dt = datetime.datetime.utcfromtimestamp(int(starttime) / 1000)

dt  # returns the UTC time you expected:
# datetime.datetime(2014, 8, 15, 0, 0)