我有两台独立的机器(本地开发和服务器)从数据库访问相同的日期时间。日期时间对象在两台计算机上具有相同的值(包括时区):
当地
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
或类似的微秒。