我从Javascript获取UTC时间戳并将其传递给我的python代码。我想将该日期存储为日期时间,因此我使用dt = datetime.datetime.fromtimestamp(int(starttime) / 1000)
构建它。我检查时间戳,它是在特定日期的UTC时间上午12:00。但是,当我打印出这个新创建的日期时间对象时,它会从前一天打印到19:00。
这里显然存在一些时区问题,但我希望默认值应该始终为UTC(显然我认为是错误的)。如何让它始终在UTC下运行,而不是在游戏中进行一些奇怪的时区转换?
答案 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)