Конвертация даты в Python - PullRequest
1 голос
/ 27 марта 2020

Я фиксирую заголовок даты отправки письма по электронной почте в следующем формате:

Fri, 27 Mar 2020 12:05:17 +0000 (UTC)

Мне нужно преобразовать в формат: ГГГГ-ММ-ДД ЧЧ: ММ

Я пытался использовать функцию datetime.strptime, но безрезультатно.

Может кто-нибудь помочь мне с этим? Поскольку я начинаю сейчас в Python, я бьюсь!

Ответы [ 3 ]

1 голос
/ 27 марта 2020

Я бы использовал python -dateutil для преобразования вашей строки в объект даты и времени, затем используйте strftime для вывода строки нужного формата.

import datetime
from dateutil import parser
x = parser.parse("Fri, 27 Mar 2020 12:05:17 +0000 (UTC)")
print(x.strftime("%Y-%m-%d %H:%M"))

вывод должен быть

2020-03-27 12:05
0 голосов
/ 28 марта 2020

Пакет email стандартной библиотеки предоставляет инструменты для анализа RFC5322 форматирования даты и времени.

from email.headerregistry import DateHeader
kwds = {}   # This dict is modified in-place
DateHeader.parse('Fri, 27 Mar 2020 12:05:17 +0000 (UTC)', kwds)
kwds['datetime']
datetime.datetime(2020, 3, 27, 12, 5, 17, tzinfo=datetime.timezone.utc)

Хотя DateHeader является современным инструментом для разбора заголовков даты унаследованная * функция email.utils.parsedate_to_datetime проще в использовании

from email.utils import parsedate_to_datetime
parsedate_to_datetime('Fri, 27 Mar 2020 12:05:17 +0000 (UTC)')
datetime.datetime(2020, 3, 27, 12, 5, 17, tzinfo=datetime.timezone.utc)

* В то время как для документов перечислите модуль utils под устаревшим заголовком API, parsedate_to_datetime используется внутренне на DateHeader для анализа строк даты и времени, так что он, вероятно, не исчезнет в ближайшее время.

0 голосов
/ 27 марта 2020

Пользовательская реализация без использования библиотеки datetime, если вы не хотите эту зависимость.

date_given = "Fri, 27 Mar 2020 12:05:17 +0000 (UTC)"

month ={'Jan':'01','Feb':'02','Mar':'03','Apr':'04','May':'05','Jun':'06','Jul':'07','Aug':'08','Sep':'09','Oct':'10','Nov':'11','Dec':'12'}

_,d,m,y,t,_,_ = date_given.split(' ')

print(str(y)+"-"+str(month[m])+'-'+str(d)+' '+str(t[:-3]))

даст вам 2020-03-27 12:05

...