Python xmlrpclib 在传输时将 datetime 对象更改为 DateTime 实例

fal*_*410 5 python datetime xml-rpc xmlrpclib python-datetime

使用 Python 2.6.x 的 xmlrpclib 在客户端和服务器之间交换的消息在服务器端创建了一种“实例”类型,而不是“日期时间”类型。在客户端,我创建了一个新的

updateTime = datetime(year, month, day, hour, minute, second)
print type(updateTime)
print updateTime
Run Code Online (Sandbox Code Playgroud)

结果是

<type 'datetime.datetime'>
2015-10-07 10:21:52
Run Code Online (Sandbox Code Playgroud)

发送时,字典在客户端看起来像这样:

'updateTime': datetime.datetime(2015, 10, 7, 10, 21, 52)
Run Code Online (Sandbox Code Playgroud)

但是服务器端的传入字典是这样的:

'updateTime': <DateTime '20151007T10:21:52' at 7f4dbf4ceb90>
Run Code Online (Sandbox Code Playgroud)

打印类型及其字符串表示如下:

<type 'instance'>
20151007T10:21:52
Run Code Online (Sandbox Code Playgroud)

我们正在使用 xmlrpclib.ServerProxy 但将use_datetime更改为TrueFalse根本没有任何区别。

xmlrpclib.ServerProxy('https://'+rpc_server_addr, allow_none=True, use_datetime=True)
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我也希望接收方有一个 tpye 'datetime.datetime'。

小智 3

您必须将 xmlrpc.datetime 格式转换为 python datetime.datetime 对象。

我发现变换对象的最简单方法是:

import datetime

my_datetime = datetime.datetime.strptime(str(xmlrpc.datetime), '%Y%m%dT%H:%M:%S')
Run Code Online (Sandbox Code Playgroud)