Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.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
Python 如何用冒号解析时区_Python_String_Datetime_Strptime - Fatal编程技术网

Python 如何用冒号解析时区

Python 如何用冒号解析时区,python,string,datetime,strptime,Python,String,Datetime,Strptime,有没有办法用datetime.strtime解析“+00:00”格式的时区?例如: Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (In tel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from datetime import datetim

有没有办法用
datetime.strtime
解析“+00:00”格式的时区?例如:

Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (In
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime
>>> datetime.strptime("12:34:56+0000", "%X%z")
datetime.datetime(1900, 1, 1, 12, 34, 56, tzinfo=datetime.timezone.utc)
>>> datetime.strptime("12:34:56+00:00", "%X%z")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python34\lib\_strptime.py", line 500, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "C:\Python34\lib\_strptime.py", line 337, in _strptime
    (data_string, format))
ValueError: time data '12:34:56+00:00' does not match format '%X%z'
Python 3.4.3(v3.4.3:9b73f1c3e601,2015年2月24日,22:43:06)[MSC v.1600 32位(在
win32上的[tel)]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>从日期时间导入日期时间
>>>datetime.strtime(“12:34:56+0000,“%X%z”)
datetime.datetime(1900,1,1,12,34,56,tzinfo=datetime.timezone.utc)
>>>datetime.strtime(“12:34:56+00:00”,“%X%z”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Python34\lib\ \u strtime.py”,第500行,在\u strtime\u datetime中
tt,分数=_strtime(数据字符串,格式)
文件“C:\Python34\lib\ \u strtime.py”,第337行,在\u strtime中
(数据字符串,格式))
ValueError:时间数据“12:34:56+00:00”与格式“%X%z”不匹配
有什么想法吗?

目前,还没有治愈的方法,下面是答案和解释:更准确地说,这里:。 但您可以通过以下方式覆盖此问题:

from datetime import datetime
d = "2015-04-30T23:59:59+00:00"
if ":" == d[-3:-2]:
    d = d[:-3]+d[-2:]
print(datetime.strptime(d, "%Y-%m-%dT%H:%M:%S%z"))

另一种解决方案是使用
dateutil
库:

from dateutil import parser

mystr = '2015-04-30T23:59:59+00:00'

x = parser.parse(mystr)

# 2015-04-30 23:59:59+00:00

改编自被拒绝的编辑:

Python>=3.7:

from datetime import datetime
d = "2019-12-25T23:59:59+00:00"
print(datetime.strptime(d, "%Y-%m-%dT%H:%M:%S%z"))
在版本3.7中更改:当向strtime()方法提供%z指令时,UTC偏移量可以使用冒号作为小时、分钟和秒之间的分隔符。例如,“+01:00:00”将被解析为一小时的偏移量。此外,提供的“Z”与“+00:00”相同

Python相关:为什么不干脆
if:“==d[-3]:
from datetime import datetime
d = "2019-12-25T23:59:59+00:00"
if ":" == d[-3]:
    d = d[:-3]+d[-2:]
print(datetime.strptime(d, "%Y-%m-%dT%H:%M:%S%z"))