Разбор дат в нескольких форматах - PullRequest
0 голосов
/ 27 мая 2020

Даты, возвращаемые imaplib, имеют следующий формат:

  dates = [
  'Mon, 27 May 2019 13:13:02 -0300 (ART)',
  'Tue, 28 May 2019 00:28:31 +0800 (CST)',
  'Mon, 27 May 2019 18:32:13 +0200',
  'Mon, 27 May 2019 18:43:13 +0200',
  'Mon, 27 May 2019 19:00:11 +0200',
  '27 May 2019 18:54:58 +0100',
  '27 May 2019 18:56:02 +0100',
  'Mon, 03 Jun 2019 10:19:56 GMT',
  '4 Jun 2019 07:46:30 +0100',
  'Mon, 03 Jun 2019 18:48:01 +0200',
  '5 Jun 2019 10:39:19 +0100'
]

Как я могу преобразовать их, скажем, в даты BST?

Вот что я пробовал до сих пор:

def date_parse(date):
  try:
    return datetime.strptime(date, '%a, %d %b %Y %H:%M:%S %z')
  except ValueError:
    try:
      return datetime.strptime(date[:-6], '%a, %d %b %Y %H:%M:%S %z')
    except ValueError:
      try:
        return datetime.strptime(date[:-6], '%d %b %Y %H:%M:%S')
      except ValueError:
        return datetime.strptime(date[:-4], '%a, %d %b %Y %H:%M:%S')

for date in dates:
    print(date)
    parsed_date = date_parse(date)
    print(parsed_date, type(parsed_date))
    print('')

Однако я получаю повторяющиеся даты с ошибкой Traceback (most recent call last):.

Как лучше всего очистить эти даты? Есть ли функция imaplib / email, которая позволяет нам автоматически возвращать чистые даты?

1 Ответ

1 голос
/ 27 мая 2020

parse функция из dateutil.parser сработала:

from dateutil.parser import parse

dates = [
  'Mon, 27 May 2019 13:13:02 -0300 (ART)',
  'Tue, 28 May 2019 00:28:31 +0800 (CST)',
  'Mon, 27 May 2019 18:32:13 +0200',
  'Mon, 27 May 2019 18:43:13 +0200',
  'Mon, 27 May 2019 19:00:11 +0200',
  '27 May 2019 18:54:58 +0100',
  '27 May 2019 18:56:02 +0100',
  'Mon, 03 Jun 2019 10:19:56 GMT',
  '4 Jun 2019 07:46:30 +0100',
  'Mon, 03 Jun 2019 18:48:01 +0200',
  '5 Jun 2019 10:39:19 +0100'
]

for date in dates:
    print(date, type(date))
    print(parse(date), type(parse(date)))
    print('')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...