Функция для получения datetime из строки datetime.strptime(date_string, format)
требует в качестве второго аргумента строкового формата. Есть ли способ построить datetime из строки, не зная точного формата и имея в виду, что Python лучше всего это угадывает?
Datetime из строки в Python, формат наилучшего угадывания строки
Ответ 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:
- normaldate
- mxDateTime
- roundup В модуле даты есть несколько фанатов
Если вы найдете что-нибудь лучше, мне бы хотелось услышать об этом, хотя.