неявное приведение строки в объект datetime - PullRequest
1 голос
/ 11 декабря 2011

Я знаю, что существуют различные посты, подобные этому. и хорошо знакомы с функциями strptime и strftime.

Мой вопрос немного другой.

Какой самый простой способ в питоне неявно приводить строку в объект даты / даты?

Или явно, функция, которая будет принимать либо строку, которая представляет дату, либо объект даты.

аналогично SQL date_object = 'string_of_date'

Я думаю, что

cast_date=lambda x:x if type(x)=='datetime' else strptime(x,'%%%')#dosen't really work
cast_date=lambda x:strptime(str(x),'%%%') #edit

или подобное будет работать, но я лучше использую что-то нативное, если существует

Спасибо

Ответы [ 2 ]

4 голосов
/ 11 декабря 2011

Возможно, вы захотите взглянуть на модуль dateutil .У него отличный анализатор даты и времени.

>>> from dateutil.parser import parse
>>> print parse("1:00PM")
2011-12-11 13:00:00
>>> print parse("1/1/2008")
2008-01-01 00:00:00
>>> print type(parse("1/1/2008"))
<type 'datetime.datetime'>

Объедините это вместе с проверкой типа следующим образом:

my_datetime = parse(item) if isinstance(item, str) or isinstance(item, unicode) else item
0 голосов
/ 11 декабря 2011

В Python нет собственного приведения даты и времени.Ваша маленькая вспомогательная функция выглядит как разумный подход.Подумайте об использовании isinstance вместо точной проверки типа (чтобы разрешить подклассы datetime).

...