2015-10-07 2 views
3

Обмен сообщениями между клиентом и сервером с использованием xmlrpclib с использованием 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, но это относится только к значениям даты/времени.

Смежные вопросы