Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将ISOFormated转换为Python datetime?_Python_Django - Fatal编程技术网

如何将ISOFormated转换为Python datetime?

如何将ISOFormated转换为Python datetime?,python,django,Python,Django,我有一个datetime字符串,格式为2017-08-30T10:21:45.337312+00:00使用timezone.localtime(timezone.now()).isoformat()从django服务器发送 我需要把它解析回一个时区对象。怎么做 我尝试了以下方法,但不起作用 kolkatta_tz = pytz.timezone("Asia/Kolkata") kolkatta_tz.localize(datetime.strptime(product_list[index][5

我有一个datetime字符串,格式为
2017-08-30T10:21:45.337312+00:00
使用
timezone.localtime(timezone.now()).isoformat()从django服务器发送

我需要把它解析回一个时区对象。怎么做

我尝试了以下方法,但不起作用

kolkatta_tz = pytz.timezone("Asia/Kolkata")
kolkatta_tz.localize(datetime.strptime(product_list[index][5], '%Y-%m-%dT%H:%M:%S.%fZ'))
它抛出以下错误:

time data '2017-08-30T10:21:45.334742+00:00' does not match format '%Y-%m-%dT%H:%M:%S.%fZ'

python dateutil包可以解析ISO 8601和其他日期和时间字符串以及

>>> import dateutil.parser
>>> dateutil.parser.parse('2008-09-03T20:56:35.450686Z') # RFC 3339 format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686, tzinfo=tzutc())
>>> dateutil.parser.parse('2008-09-03T20:56:35.450686') # ISO 8601 extended format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686)
>>> dateutil.parser.parse('20080903T205635.450686') # ISO 8601 basic format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686)
>>> dateutil.parser.parse('20080903') # ISO 8601 basic format, date only
datetime.datetime(2008, 9, 3, 0, 0)

python dateutil包可以解析ISO 8601和其他日期和时间字符串以及

>>> import dateutil.parser
>>> dateutil.parser.parse('2008-09-03T20:56:35.450686Z') # RFC 3339 format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686, tzinfo=tzutc())
>>> dateutil.parser.parse('2008-09-03T20:56:35.450686') # ISO 8601 extended format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686)
>>> dateutil.parser.parse('20080903T205635.450686') # ISO 8601 basic format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686)
>>> dateutil.parser.parse('20080903') # ISO 8601 basic format, date only
datetime.datetime(2008, 9, 3, 0, 0)

使用dateutil的parser.parse方法:

import dateutil

date_string = '2017-08-30T10:21:45.337312+00:00'
datetime_object = dateutil.parser.parse(date_string)
print(repr(datetime_object))
给你:

datetime.datetime(2017, 8, 30, 10, 21, 45, 337312, tzinfo=tzutc())
要获取
tzinfo
对象:

datetime_object.tzinfo
例如:

print(datetime_object.tzinfo)
产出:

tzutc()
示例函数: 功能测试: 返回:
使用dateutil的parser.parse方法:

import dateutil

date_string = '2017-08-30T10:21:45.337312+00:00'
datetime_object = dateutil.parser.parse(date_string)
print(repr(datetime_object))
给你:

datetime.datetime(2017, 8, 30, 10, 21, 45, 337312, tzinfo=tzutc())
要获取
tzinfo
对象:

datetime_object.tzinfo
例如:

print(datetime_object.tzinfo)
产出:

tzutc()
示例函数: 功能测试: 返回:
它不起作用对人们来说不是一个非常有用的问题描述。。但我猜这是因为您缺少Z之前的
%
。我添加了错误描述。您是否尝试在Z之前添加百分号并查看是否有效?您的意思是“%Y-%m-%dT%H:%m:%s.%f%Z”?是的,我也试过,但同样的错误。它不起作用,对人们来说不是一个非常有用的问题描述。。但我猜这是因为您缺少Z之前的
%
。我添加了错误描述。您是否尝试在Z之前添加百分号并查看是否有效?您的意思是“%Y-%m-%dT%H:%m:%s.%f%Z”?是的,我也试过了,但同样的错误。