Преобразование формата даты ‘Ср. Окт 20 16:42:04 0000 2021’ на Python

#python #datetime

Вопрос:

Я написал сценарий для получения данных из Twitter, теперь я занимаюсь разделением столбцов, я хочу, чтобы дата и время были в отдельных столбцах.

Я получаю такую дату, как: Ср. 20 октября 16:42:04 0000 2021

Я делаю это с помощью следующего кода:

 filtered_data['date'] = tweet['created_at']
 

Затем я хочу преобразовать эту дату во время получения в два поля с использованием даты и времени

 date_formats = '%d-%m-%Y'
time_formats = '%H:%M:%S'
 

На момент подачи заявления:

 filtered_data['date'] = datetime.strptime(tweet['created_at'], date_formats)
 

Я получаю следующую ошибку:

 time data 'Wed Oct 20 16:42:04  0000 2021' does not match format '%d-%m-%Y'
 

Скажите мне, как я могу осуществить эту трансформацию и возможно ли это вообще

Ответ №1:

Если вам нужен объект datetime:

подаренный

 tweet['created_at'] = 'Wed Oct 20 16:42:04  0000 2021'
 

использовать

 input_format = '%a %b %d %H:%M:%S %z %Y'

filtered_data['date'] = datetime.strptime( 
    tweet['created_at'], 
    input_format)
 

результаты в

 >>> filtered_data['date']
datetime(2021, 10, 20, 16, 42, 4, tzinfo=datetime.timezone.utc)
 

Если вам нужна отформатированная строка в виде '%d-%m-%Y' :

подаренный

 tweet['created_at'] = 'Wed Oct 20 16:42:04  0000 2021'
 

использовать

 input_format = '%a %b %d %H:%M:%S %z %Y'
output_format = '%d-%m-%Y'

filtered_data['date'] = datetime.strptime( 
    tweet['created_at'], 
    input_format).strftime(output_format)
 

результаты в

 >>> filtered_data['date']
'20-10-2021'
 

Ссылка

См. python datetime.strptime и datetime.strftime

Ответ №2:

Сначала вам нужно использовать текущий формат. См. Пример:

 from datetime import datetime

my_date = 'Wed Oct 20 16:42:04  0000 2021'
initial_format = '%a %b %d %H:%M:%S %z %Y'
final_format = '%d-%m-%Y'

new_date = datetime.strptime(my_date, initial_format).strftime(final_format)
print(new_date)
 

Выход:

 20-10-2021
 

Так что в вашем случае попробуйте:

 filtered_data['date'] = datetime.strptime(tweet['created_at'], '%a %b %d %H:%M:%S %z %Y').strftime(date_formats)
 

Комментарии:

1. спасибо) Все работает