Как я могу использовать datetime.strptime для строки в формате «0000-00-00T00: 00: 00 + 00: 00»? - PullRequest
1 голос
/ 29 мая 2019

В связи с обстоятельствами моего приложения, я бы предпочел использовать datetime.strptime вместо dateutil.parser.

. Посмотрев на документы , я подумал, что %Y-%m-%dT%H:%M:%S%z может бытьправильный формат для разбора строки даты, как это.Все же это все еще дает мне ошибку.

Пример

from datetime import datetime

d = '0000-00-00T00:00:00+00:00'
datetime.strptime(d, '%Y-%m-%dT%H:%M:%S%z')
ValueError: time data '0000-00-00T00:00:00+00:00' does not 
            match format '%Y-%m-%dT%H:%M:%S%z'

Ответы [ 2 ]

1 голос
/ 29 мая 2019

Самый простой способ работы с часовыми поясами - использовать dateutil.parser:

from dateutil.parser import parse
date_obj = parse('1970-01-01T00:00:00+00:00')

date_obj

> datetime.datetime(1970, 1, 1, 0, 0, tzinfo=tzutc())

Но вы должны передать действительное значение даты-времени (не только нули ...)

Если вы хотите использовать strptime(), часовой пояс должен быть в формате 0000, а не 00:00, поэтому это работает:

d = '1900-02-05T11:43:32+0000'
datetime.strptime(d, '%Y-%m-%dT%H:%M:%S%z')

> datetime.datetime(1900, 2, 5, 11, 43, 32, tzinfo=datetime.timezone.utc)
0 голосов
/ 29 мая 2019

Я не уверен, что вы пытаетесь сделать со своим кодом, но ошибка не выдается из-за неправильного формата, а потому, что '0000-00-00T00:00:00+00:00' не является допустимым временем, потому что ноль не является датой. Если вы попробуете это с другим временем, например: '1900-01-01T00:00:00+00:00', оно должно работать нормально.

...