Javascript日期字符串到python datetime对象

时间:2016-09-04 07:21:24

标签: javascript python django datetime

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

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

然而,在这种方法中,没有保留用户的时区。

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

Sun Sep 04 2016 12:38:43 GMT+0530 (IST)

在转换为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'

1)如何解决这个问题? 2)有没有更好的方法来接近它?

2 个答案:

答案 0 :(得分:4)

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

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

它将输出作为日期时间对象:

datetime.datetime(2016, 9, 4, 7, 13, 6, tzinfo=tzoffset(u'IST', -19800))

答案 1 :(得分:0)

您的第一个问题是输入格式不同。但不幸的是,这不是你唯一的问题,即使你修正了它也行不通。

事实是,即使第一种格式也会因时区不同而失败:

<img>

失败了:

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

ValueError: time data 'Sun, 04 Sep 2016 07:13:06 IST' does not match format '%a, %d %b %Y %H:%M:%S %Z' 仅仅不足以处理时区。

根据您的选项查看以下答案: