python datetime:strptime和strftime没有正确转换相同的数据

时间:2016-12-07 06:12:52

标签: python django datetime

我正在将一个datetime对象转换为一个字符串,通过http传递给另一个服务器(在一个json对象中作为字段),然后使用strptime将其再次转换为datetime对象。但是,间歇性地,两步转换不会产生最初转换的相同数据。总是,错误是在最终的datetime对象中减少一秒。

我在两台服务器上的python版本是2.7.6。

发送服务器在django 1.8.2版上运行。接收服务器在django 1.9版上运行。

我用于转换/转换的日期格式是"%Y-%m-%dT%H:%M:%S%fZ"。

转换(在django 1.8.2服务器上):

in_time = datetime.datetime.now()
input_time_str = datetime.datetime.strftime(input_time, "%Y-%m-%dT%H:%M:%S.%fZ")

转换(在django 1.9服务器上):

input_time = datetime.datetime.strptime(input_time_str, "%Y-%m-%dT%H:%M:%S.%fZ")

这是应该发生还是某些版本不匹配导致这种情况? 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

datetime.now()返回您当地时区的时间。随后,当strptime()解析那段时间时,它并不知道它所指的时区;它可能假定系统的默认时区,可能与其他系统不同。

您可以使用datetime.utcnow()来获取UTC时间。