强制suds使用朴素日期时间
我正在尝试使用suds来调用一个网络服务,但遇到了一个问题,希望这里有人能帮我解决。
简单来说,我们需要传递一个日期时间对象,以确定服务停止的日期,但问题是suds在生成的字符串末尾强制加上了-4时区(这是脚本所在计算机的正确时区)。然而,我们的服务提供商似乎错误地解读了这个,导致日期提前了一天。
我们之前用php调用过这个网络服务,传递了一个简单的“日期时间”对象(基本上就是像“YYYY-mm-dd HH:mm:ss”这样的字符串),那样是没问题的,这说明时区可能是导致问题的原因。
所以我想真正的问题是,如何让suds使用一个简单的日期时间对象,或者使用不同的时区(我怀疑服务器是配置为UTC时区,这可能是问题的根源)。
提前感谢大家的帮助!
2 个回答
0
我知道这个讨论已经很久了。不过,你可能想看看下面这个链接:https://fedorahosted.org/suds/ticket/353
Suds在处理日期和时间方面似乎有点傻乎乎的。
1
我一直在为这个问题苦恼。我在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)
之前我得到的是“2013-04-16T23:00:00”,现在我得到了正确的值“2013-04-17T00:00:00”。