将Javascript日期字符串转换为python datetime对象

dor*_*ado 1 javascript python django datetime

当前日期时间通过ajax请求传递到Django后端,该日期将存储在数据库中。要将其存储在数据库中,必须首先将日期转换为一个datetime对象,可以Sun, 04 Sep 2016 07:13:06 GMT通过以下语句轻松地将日期转换为UTC格式(例如)的对象:

>>> from datetime import datetime
>>> datetime.strptime("Sun, 04 Sep 2016 07:13:06 GMT", "%a, %d %b %Y %H:%M:%S %Z")
Run Code Online (Sandbox Code Playgroud)

但是,在这种方法中,无法保留用户的时区。

javascript Date构造函数调用,即new Date()以以下格式返回日期:

Sun Sep 04 2016 12:38:43 GMT+0530 (IST)
Run Code Online (Sandbox Code Playgroud)

转换为datetime对象时给出错误。

>>> datetime.strptime("Sun, 04 Sep 2016 07:13:06 GMT+0530 (IST)", "%a, %d %b %Y %H:%M:%S %Z")

ValueError: time data 'Sun Sep 04 2016 12:46:07 GMT+0530 (IST)' does not match format '%a, %d %b %Y %H:%M:%S %Z'
Run Code Online (Sandbox Code Playgroud)

1)如何解决这个问题?2)还有更好的方法吗?

小智 5

您可以使用python的dateutil模块来解析您的日期。

from dateutil import parser
parser.parse("Sun, 04 Sep 2016 07:13:06 GMT+0530 (IST)")
Run Code Online (Sandbox Code Playgroud)

它将输出作为datetime对象:

datetime.datetime(2016, 9, 4, 7, 13, 6, tzinfo=tzoffset(u'IST', -19800))
Run Code Online (Sandbox Code Playgroud)