Есть ли способ конвертировать несколько форматов даты в datetime python

Есть ли простой способ конвертировать несколько форматов даты в объект datetime в python? В конце концов они будут вставлены в базу данных MySQL с типом DATE.

Примеры того, какой тип данных я могу получить:

2 августа 2008 г.

04.02.2007

Май 2014 г.

Converted Я бы хотел, чтобы это были:

2008-08-02

2007-04-02

2014-05-00

Есть ли простой способ сделать это или мне нужно жестко кодировать каждый сценарий?

2 Solutions collect form web for “Есть ли способ конвертировать несколько форматов даты в datetime python”

Используйте стороннюю библиотеку dateutil :

>>> from dateutil import parser >>> parser.parse("August 2, 2008") datetime.datetime(2008, 8, 2, 0, 0) >>> parser.parse("04-02-2007") datetime.datetime(2007, 4, 2, 0, 0) >>> parser.parse("May 2014") datetime.datetime(2014, 5, 6, 0, 0) 

Преобразование в требуемый формат:

 >>> parser.parse("August 2, 2008").strftime('%Y-%m-%d') '2008-08-02' >>> parser.parse("04-02-2007").strftime('%Y-%m-%d') '2007-04-02' >>> parser.parse("May 2014").strftime('%Y-%m-%d') '2014-05-06' 

Вы можете установить его с помощью pip:

 pip install python-dateutil 

Также посмотрите:

 >>> parser.parse("May 2014") datetime.datetime(2014, 5, 6, 0, 0) >>> # As you wanted day to be 0 and that is not valid ... >>> datetime.datetime(2014, 5, 0, 0, 0) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: type object 'datetime.datetime' has no attribute 'datetime' >>> # Workaround: ... >>> from datetime import datetime >>> datedefault = datetime.now().replace(day=1, hour=0, minute=0, second=0, microsecond=0) >>> parser.parse("May 2014",default=datedefault).strftime('%Y-%m-%d') '2014-05-01' 

Если день не указан в строке даты, а также не задан по умолчанию, это займет текущий день. С сегодняшнего дня 06 Aug 2016 года он заменил день на 0 в первом разделе ответа на "May 2014" .

Вы также можете проверить дату dateparser :

 >>> import dateparser >>> dates = ['August 2, 2008', '04-02-2007', 'May 2014'] >>> [dateparser.parse(d, settings={'PREFER_DAY_OF_MONTH': 'first'}).strftime('%Y-%m-%d') for d in dates] ['2008-08-02', '2007-04-02', '2014-05-01'] 

Плюс сторона вы можете указать, чтобы заполнить дату с отсутствующим днем ​​(например, май 2014 года), чтобы использовать либо первый день месяца, последний или текущий.

  • Потерянное соединение с сервером MySQL во время запроса
  • Модуль Python MySQL
  • Изменение типа данных Django в моделях без отбрасывания таблицы
  • Включая вызовы функций БД в python MySQLdb executemany ()
  • Как закодировать (utf8mb4) в Python
  • Python mysql.connector.errors. % s передано в SQL-запрос с кавычками
  • Подключение к MySQL с помощью pydobc
  • Сохранение Python Маринованные объекты в MySQL db
  • Python - лучший язык программирования в мире.