python日期时间对象的Javascript日期字符串

python日期时间对象的Javascript日期字符串,javascript,python,django,datetime,Javascript,Python,Django,Datetime,当前日期时间通过ajax请求传递到django后端,并存储在数据库中。要将其存储在数据库中,必须首先将日期转换为datetime对象,该对象可通过以下语句轻松转换为UTC格式的日期(例如Sun,2016年9月4日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

当前日期时间通过ajax请求传递到django后端,并存储在数据库中。要将其存储在数据库中,必须首先将日期转换为
datetime
对象,该对象可通过以下语句轻松转换为UTC格式的日期(例如
Sun,2016年9月4日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) 有更好的方法吗?

您的第一个问题是输入的格式不同。但不幸的是,这并不是你唯一的问题,即使你解决了这个问题,它也不会起作用

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

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'
strtime
对于处理时区来说还不够好

检查以下答案以了解您的选择:


    • 您的第一个问题是输入的格式不同。但不幸的是,这并不是你唯一的问题,即使你解决了这个问题,它也不会起作用

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

      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'
      
      strtime
      对于处理时区来说还不够好

      检查以下答案以了解您的选择:


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

      from dateutil import parser
      parser.parse("Sun, 04 Sep 2016 07:13:06 GMT+0530 (IST)")
      
      它以datetime对象的形式提供输出:

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

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

      from dateutil import parser
      parser.parse("Sun, 04 Sep 2016 07:13:06 GMT+0530 (IST)")
      
      它以datetime对象的形式提供输出:

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