当前日期时间通过 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)有没有更好的方法来接近它?
答案 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'
仅仅不足以处理时区。
根据您的选项查看以下答案: