Подтвердить что ты не робот

Datetime из строки в Python, формат наилучшего угадывания строки

Функция для получения datetime из строки datetime.strptime(date_string, format) требует в качестве второго аргумента строкового формата. Есть ли способ построить datetime из строки, не зная точного формата и имея в виду, что Python лучше всего это угадывает?

4b9b3361

Ответ 1

Используйте библиотеку dateutil.

Я уже использовал dateutil как незаменимую библиотеку для обработки часовых поясов
(См. Преобразование строки datetime UTC в локальное datetime и Как преобразовать локальное время в UTC в Python?)

И я только что понял, что имеет поддержку синтаксического анализа даты:

import dateutil.parser
yourdate = dateutil.parser.parse(datestring)

(См. также Как преобразовать строку даты и времени ISO 8601 в объект Datetime Python?)

Ответ 2

Может уйти с простой функцией, если только проверять даты.

def get_date(s_date):
    date_patterns = ["%d-%m-%Y", "%Y-%m-%d"]

    for pattern in date_patterns:
        try:
            return datetime.datetime.strptime(s_date, pattern).date()
        except:
            pass

    print "Date is not in expected format: %s" %(s_date)
    sys.exit(0)

Ответ 3

Назад, прежде чем я был парнем-питоном, я был человеком-perl. Одна из вещей, которые я всегда пропустил, но не видел ничего близкого к ней, - Date:: Manip. Этот модуль может извлекать хорошую временную метку из небольшого количества кусков. Я почти подозреваю, что автор заключил сделку с Дьяволом.

Я столкнулся с несколькими вещами, которые берут на него удары в Python:

Если вы найдете что-нибудь лучше, мне бы хотелось услышать об этом, хотя.