Заставить юзеров использовать наивное datetime - PullRequest
1 голос
/ 02 ноября 2011

Я пытаюсь использовать веб-сервис с suds, но столкнулся с проблемой, которая, надеюсь, кто-то здесь сможет мне помочь.

В основном проблема заключается в том, что конкретный метод, который мы используем, требует, чтобы мы передали объект dateTime для определения даты остановки службы, проблема в том, что suds принудительно устанавливает часовой пояс -4 (правильный часовой пояс для компьютера где сценарий размещается) в конце результирующей строки, однако, похоже, что наш провайдер использует это неверно и заставляет дату быть на день раньше.

Мы пробовали этот веб-сервис прежде, чем php передавал наивный объект "dateTime" (в основном строку типа "ГГГГ-мм-дд ЧЧ: мм: сс"), и он отлично работает, что намекает на то, что именно часовой пояс является причиной выпуск.

Так что, я думаю, реальный вопрос заключается в том, как я могу заставить suds использовать наивный объект dateTime ИЛИ использовать другой часовой пояс (я подозреваю, что сервер настроен с часовым поясом UTC, и это является причиной проблемы).

Заранее спасибо за вашу помощь

Ответы [ 2 ]

1 голос
/ 23 июня 2015

Я боролся с этим.Я отредактировал lib \ site-packages \ suds \ sax \ date.py в строке 297. Я закомментировал self .__ Adjust (), и теперь он не регулирует время в зависимости от часового пояса.

    if isinstance(date, basestring):
        part = date.split('T')
        Date.__init__(self, part[0])
        Time.__init__(self, part[1], 0)
        self.datetime = \
            dt.datetime.combine(self.date, self.time)
        # self.__adjust()
        return
    raise ValueError, type(date)

Iполучал «2013-04-16T23: 00: 00», и теперь я получаю правильное значение «2013-04-17T00: 00: 00».

0 голосов
/ 13 сентября 2012

Я понимаю, что эта тема довольно древняя. Тем не менее, вы можете проверить следующее: https://fedorahosted.org/suds/ticket/353

Судя по всему, при обращении с датами кажется, что мозг просто мертв.

...