Преобразовать строку в дату с помощью стрелки Python - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь преобразовать строку в дату с помощью модуля arrow. Во время преобразования я получил эту ошибку: arrow.parser.ParserMatchError: Failed to match '%A %d %B %Y %I:%M:%S %p %Z' when parsing 'Wednesday 06 November 2019 03:05:42 PM CDT'

Преобразование выполняется с использованием одной простой строки в соответствии с этой документацией :

date = arrow.get(date, '%A %d %B %Y %I:%M:%S %p %Z')

Я также пытаюсь сделать это с datetime и получил еще одну ошибку:

ValueError: time data 'Wednesday 06 November 2019 03:27:33 PM CDT' does not match format '%A %d %B %Y %I:%M:%S %p %Z'

Что мне не хватает?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Хотя вы можете просто жестко кодировать 'CDT' в своем коде, как @Hamza Rashid предлагает в своем ответе , это сломается, если информация о часовом поясе когда-либо изменится на что-то другое, например 'CST' или, возможно,'-0600'.

Чтобы избежать этой потенциальной проблемы, я бы вместо этого использовал что-то вроде следующего, которое просто игнорирует все в строке начиная с последнего пробела в ней и далее:

import datetime

date = 'Wednesday 06 November 2019 03:05:42 PM CDT'
date = datetime.datetime.strptime(date[:date.rindex(' ')], '%A %d %B %Y %I:%M:%S %p')
print(date)  # -> 2019-11-06 15:05:42
0 голосов
/ 07 ноября 2019

Проблема с часовым поясом, здесь работает жесткий код часового пояса

import datetime
datetime.datetime.strptime('Wednesday 06 November 2019 03:05:42 PM CDT', '%A %d %B %Y %I:%M:%S %p CDT')
...