Переформатирование дат Python

У меня есть файл с датами в нескольких разных форматах, и я пытаюсь перевести их все в формат ГГГГММДД в ​​Python. Большинство дат представлены в следующем формате:

пн, 01 июля 2013 г., 16:33:59 по Гринвичу

и я понятия не имею, как их вставить

20130701

Прошу прощения, если это довольно простой вопрос --- я новичок в python

РЕДАКТИРОВАТЬ: я пытаюсь сделать это для ЛЮБОЙ даты. Я использовал 01 июля в качестве примера и, оглядываясь назад, сделал вид, что задаю другой вопрос. Итак, я думаю, я ищу что-то, что может найти даты и переформатировать их.


person user2479483    schedule 03.07.2013    source источник


Ответы (2)


Используйте библиотеку python-dateutil:

from dateutil import parser

dtobject = parser.parse(datestring)

Метод datutil.parser.parse() распознает широкий спектр форматов даты и возвращает объект datetime.datetime()< /а>.

Используйте метод datetime.strftime(), если хотите отформатировать результат. снова как (однородная) строка:

dtobject.strftime('%Y%m%d')

Демо:

>>> from dateutil import parser
>>> parser.parse('Mon, 01 Jul 2013 16:33:59 GMT')
datetime.datetime(2013, 7, 1, 16, 33, 59, tzinfo=tzlocal())
>>> parser.parse('Mon, 01 Jul 2013 16:33:59 GMT').strftime('%Y%m%d')
'20130701'
person Martijn Pieters    schedule 03.07.2013
comment
Можно ли сделать это для любой даты (а не для выбора конкретной даты)? - person user2479483; 04.07.2013
comment
@ user2479483: я не уверен, что подписан на вас; Я продемонстрировал, как все это работает с определенной датой (той, которую вы дали нам в своем посте), но это будет работать с большинством форматов даты, которые вы ему предложите. Просто передайте ему строковую переменную. - person Martijn Pieters; 04.07.2013
comment
Хорошо, позвольте мне уточнить. В файле, который у меня есть, сотни дат, поэтому было бы утомительно делать все это, используя этот метод. Есть ли способ найти все даты и изменить все форматы дат более элегантным способом, чем просто просматривать каждую дату по отдельности? - person user2479483; 04.07.2013
comment
См. раздел Извлечение даты из строки в Python. - person Martijn Pieters; 04.07.2013

Это также может быть достигнуто следующим образом:

import datetime
x = 'Mon, 01 Jul 2013 16:33:59 GMT'
''.join(str(datetime.datetime.strptime(x, '%a, %d %b %Y  %H:%M:%S %Z').date()).split('-'))

если в вашей строке даты введен какой-либо другой параметр, вы можете включить директиву . например, %p является эквивалентом AM или PM в Locale.

person Avichal Badaya    schedule 03.07.2013