如何强制 python 的 datetime.strftime 以 UTC 格式输出?



我有两台独立的机器(本地开发和服务器)从数据库访问相同的日期时间。日期时间对象在两台计算机上具有相同的值(包括时区):

当地

print ts
> datetime.datetime(2017, 1, 13, 7, 18, 9, 209000, tzinfo=<UTC>)

服务器

print ts
> datetime.datetime(2017, 1, 13, 7, 18, 9, 209000, tzinfo=<UTC>)

但是,两台计算机上strftime的输出是不同的:

当地

print ts.strftime('%s')
> 1484320689

服务器

print ts.strftime('%s')
> 1484291889

这是怎么回事?如何让客户端和服务器以 UTC 格式输出相同的时间戳字符串?

如果有人遇到这篇文章,我找到了解决方案。

事实证明,strftime 总是试图转换为本地时间,而您对此无能为力。

解决方案是使用日历:

return calendar.timegm(datetime.utcnow().timetuple())

如果您需要毫秒:

return calendar.timegm(self.timestamp.timetuple()) * 1000 + self.timestamp.microsecond / 1000

或类似的微秒。

相关内容

  • 没有找到相关文章

最新更新