python:使用strtime和timedelta时出错

python:使用strtime和timedelta时出错,python,datetime,timedelta,openerp-7,Python,Datetime,Timedelta,Openerp 7,我正在计算一个到期日。代码如下: from datetime import datetime,timedelta commande = self.pool.get('commandes').browse(cr, uid,commande_id,context=context) date_commande= datetime.strptime(commande.date_commande, "%Y-%m-%d").date() res['due_date']=date_commande+

我正在计算一个到期日。代码如下:

 from datetime import datetime,timedelta

 commande = self.pool.get('commandes').browse(cr, uid,commande_id,context=context)
 date_commande= datetime.strptime(commande.date_commande, "%Y-%m-%d").date()
 res['due_date']=date_commande+timedelta(days=20)
到期日字段为日期类型

我得到这个错误:

XmlHttpRequestError INTERNAL SERVER ERROR
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request.    Either the server is overloaded or there is an error in the application.</p>
XmlHttpRequestError内部服务器错误
500内部服务器错误
内部服务器错误
服务器遇到内部错误,无法完成您的请求。服务器过载或应用程序中存在错误

我在没有timedelta的情况下测试了代码,但仍然得到了相同的错误

回溯:

Traceback (most recent call last):
  File "werkzeug\serving.py", line 159, in run_wsgi    
  File "werkzeug\serving.py", line 146, in execute    
  File "C:\Program Files (x86)\OpenERP 7.0-20140120-002508\Server\server\openerp\service\wsgi_server.py", line 417, in application
    return application_unproxied(environ, start_response)
  File "C:\Program Files (x86)\OpenERP 7.0-20140120-002508\Server\server\openerp\service\wsgi_server.py", line 403, in application_unproxied
    result = handler(environ, start_response)
  File "C:\Program Files (x86)\OpenERP 7.0-20140120-002508\Server\server\openerp\addons\web\http.py", line 528, in __call__
    return self.dispatch(environ, start_response)
  File "C:\Program Files (x86)\OpenERP 7.0-20140120-002508\Server\server\openerp\addons\web\http.py", line 487, in __call__
    return self.app(environ, start_wrapped)
  File "werkzeug\wsgi.py", line 411, in __call__    
  File "C:\Program Files (x86)\OpenERP 7.0-20140120-002508\Server\server\openerp\addons\web\http.py", line 487, in __call__
    return self.app(environ, start_wrapped)
  File "werkzeug\wsgi.py", line 411, in __call__    
  File "C:\Program Files (x86)\OpenERP 7.0-20140120-002508\Server\server\openerp\addons\web\http.py", line 487, in __call__
    return self.app(environ, start_wrapped)
  File "werkzeug\wsgi.py", line 411, in __call__    
  File "C:\Program Files (x86)\OpenERP 7.0-20140120-002508\Server\server\openerp\addons\web\http.py", line 553, in dispatch
    result = handler(request)
  File "C:\Program Files (x86)\OpenERP 7.0-20140120-002508\Server\server\openerp\addons\web\http.py", line 618, in <lambda>
    return lambda request: JsonRequest(request).dispatch(method)
  File "C:\Program Files (x86)\OpenERP 7.0-20140120-002508\Server\server\openerp\addons\web\http.py", line 251, in dispatch
    body = simplejson.dumps(response)
  File "simplejson\__init__.py", line 286, in dumps    
  File "simplejson\encoder.py", line 228, in encode    
  File "simplejson\encoder.py", line 515, in _iterencode    
  File "simplejson\encoder.py", line 483, in _iterencode_dict    
  File "simplejson\encoder.py", line 483, in _iterencode_dict    
  File "simplejson\encoder.py", line 483, in _iterencode_dict    
  File "simplejson\encoder.py", line 525, in _iterencode    
  File "simplejson\encoder.py", line 202, in default    
TypeError: datetime.date(2014, 3, 3) is not JSON serializable
回溯(最近一次呼叫最后一次):
文件“werkzeug\serving.py”,第159行,在run\u wsgi中
文件“werkzeug\serving.py”,第146行,执行
应用程序中的文件“C:\Program Files(x86)\OpenERP 7.0-20140120-002508\Server\Server\OpenERP\service\wsgi_Server.py”,第417行
返回应用程序\u未经验证(环境、启动\u响应)
文件“C:\Program Files(x86)\OpenERP 7.0-20140120-002508\Server\Server\OpenERP\service\wsgi\u Server.py”,第403行,在应用程序\u中未导出
结果=处理程序(环境、启动和响应)
文件“C:\Program Files(x86)\OpenERP 7.0-20140120-002508\Server\Server\OpenERP\addons\web\http.py”,第528行,在调用中__
返回自调度(环境、启动和响应)
文件“C:\Program Files(x86)\OpenERP 7.0-20140120-002508\Server\Server\OpenERP\addons\web\http.py”,第487行,在调用中__
返回self.app(环境,开始)
调用中第411行的文件“werkzeug\wsgi.py”
文件“C:\Program Files(x86)\OpenERP 7.0-20140120-002508\Server\Server\OpenERP\addons\web\http.py”,第487行,在调用中__
返回self.app(环境,开始)
调用中第411行的文件“werkzeug\wsgi.py”
文件“C:\Program Files(x86)\OpenERP 7.0-20140120-002508\Server\Server\OpenERP\addons\web\http.py”,第487行,在调用中__
返回self.app(环境,开始)
调用中第411行的文件“werkzeug\wsgi.py”
文件“C:\Program Files(x86)\OpenERP 7.0-20140120-002508\Server\Server\OpenERP\addons\web\http.py”,第553行,在调度中
结果=处理程序(请求)
文件“C:\Program Files(x86)\OpenERP 7.0-20140120-002508\Server\Server\OpenERP\addons\web\http.py”,第618行,在
返回lambda请求:JsonRequest(请求).dispatch(方法)
文件“C:\Program Files(x86)\OpenERP 7.0-20140120-002508\Server\Server\OpenERP\addons\web\http.py”,第251行,在分派中
body=simplejson.dumps(响应)
文件“simplejson\\uuuuu init\uuuuu.py”,第286行,转储
文件“simplejson\encoder.py”,第228行,在encode中
文件“simplejson\encoder.py”,第515行,在iterencode中
文件“simplejson\encoder.py”,第483行,在目录中
文件“simplejson\encoder.py”,第483行,在目录中
文件“simplejson\encoder.py”,第483行,在目录中
文件“simplejson\encoder.py”,第525行,在iterencode中
默认情况下,文件“simplejson\encoder.py”第202行
TypeError:datetime.date(2014,3,3)不可JSON序列化
有人能告诉我哪里出错了吗?
感谢您在将响应编码为JSON时遇到的问题,因为它无法将datetime(日期)解析为JSON,您应该使用strftime函数将其转换为字符串

因此,您可以尝试:

from datetime import datetime,timedelta

 commande = self.pool.get('commandes').browse(cr, uid,commande_id,context=context)
 date_commande= datetime.strptime(commande.date_commande, "%Y-%m-%d").date()
 res['due_date']= datetime.strftime(date_commande+timedelta(days=20),"%Y-%m-%d")

这是文件中的另一个错误,使其无法工作,而不是标题中所述的时间增量。您需要检查http服务器日志,以了解它所指的内部服务器错误,直到获得“date_command”值时,一切正常。但是当我添加'strtime'时,它给了我这个错误。我已经检查了日期的格式,并且是:%Y-%m-%d很抱歉我忘记更改标题了it@Anthony下面是错误类型error:datetime.date(2014,3,1)不是JSONserializable@soukainas你能写完整的回溯吗?),始终尝试读取错误的回溯以了解问题