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但它僅適用於日期/時間值。