2015-10-07 65 views
3

使用Python 2.6.x在客户端和服务器之间交换的消息在服务器端创建一种“实例”,而不是类型“datetime”。 在客户端我正在发送的时候创建一个新的Python xmlrpclib在发送时将datetime对象更改为DateTime实例

updateTime = datetime(year, month, day, hour, minute, second) 
print type(updateTime) 
print updateTime 

结果

<type 'datetime.datetime'> 
2015-10-07 10:21:52 

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

'updateTime': datetime.datetime(2015, 10, 7, 10, 21, 52) 

但进入词典在服务器端看起来像这样:

'updateTime': <DateTime '20151007T10:21:52' at 7f4dbf4ceb90> 

打印类型和它的字符串表示是这样的:

<type 'instance'> 
20151007T10:21:52 

我们使用xmlrpclib.ServerProxy但改变use_datetime要么不作任何差别。

xmlrpclib.ServerProxy('https://'+rpc_server_addr, allow_none=True, use_datetime=True) 

这是怎么发生的?我期望在接收端也有一个tpye'datetime.datetime'。

+0

这完全是疯了。他们为什么要这样做? – sbichenko

回答

1

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

我发现改造对象的最简单方法是:

import datetime 

my_datetime = datetime.datetime.strptime(str(xmlrpc.datetime), '%Y%m%dT%H:%M:%S') 
0

use_builtin_types=True对我的作品。所有日期时间值的类型为<class 'datetime.datetime'>

没有这个参数的所有日期时间都<class 'xmlrpc.client.DateTime'>

rpc = xmlrpc.client.ServerProxy('https://..../', use_builtin_types=True) 

Python3 XML-RPC client documentation说: 过时use_datetime标志类似于use_builtin_types但它仅适用于日期/时间值。