Есть ли встроенный метод для преобразования date
в a datetime
в Python, например, для получения datetime
полуночи заданной даты? Обратное преобразование легко: datetime
есть .date()
метод.
Мне действительно нужно звонить вручную datetime(d.year, d.month, d.day)
?
.datetime()
метод; глупо то, что у них нет такого метода.datetime.from_date()
конструктор.Ответы:
Вы можете использовать
datetime.combine(date, time)
; на время вы создаетеdatetime.time
объект, инициализированный до полуночи.источник
datetime.combine(d, time())
time.time
или что-то еще, кроме adatetime.time
.Есть несколько способов, хотя я считаю, что тот, который вы упоминаете (и не любите), является наиболее читабельным.
и так далее - но в основном все они зависят от надлежащего извлечения информации из
date
объекта и передачи ее обратно в подходящую функцию ctor или classdatetime
.источник
datetime(d.year, d.month, d.day)
кажется гораздо более читабельным, чем принятый ответdatetime.combine(d, datetime.min.time())
.midnight = datetime.datetime.combine(d, datetime.time.min)
кажется чище (предложено@
larham1 )datetime(d.year, d.month, d.day)
это более очевидно (дата-время без компонента времени). Однако это второстепенный вопрос, и использование имени переменной, такого как «полночь», делает очевидным, каков будет результат, даже если читатель не знает, чтоdatetime.time.min
представляет.datetime(d.year, d.mont, d.day)
это не только более очевидно, но и быстрее .Принятый ответ правильный, но я бы предпочел не использовать
datetime.min.time()
его, потому что для меня не очевидно, что именно он делает. Если это очевидно для вас, тогда больше силы для вас. Я также чувствую то же самое по поводуtimetuple
метода и опоры на заказ.На мой взгляд, наиболее читаемый, явный способ сделать это, не полагаясь на то, что читатель хорошо знаком с
datetime
API модуля:Это мой взгляд на «явное лучше, чем неявное».
источник
d2dt = lambda date: datetime(year=date.year, month=date.month, day=date.day)
встроенная функция этого ответа.datetime
часовом поясе. В этом случае вы можете,import pytz
а затем добавитьtzinfo=pytz.timezone('Europe/London')
, например.Вы можете использовать
date.timetuple()
метод и распаковать оператор*
.источник
datetime.combine
узнавать через ответ @ kiamlaluno. Я думаю, что это довольно питонично, особенно если учесть, что созданиеdatetime.time
объекта вdatetime.time(*map(int,"H:M:S".split(":")))
любом случае может выглядеть примерно так ...Сегодня, как и в 2016 году, я думаю, что самое чистое решение предоставлено Pandas Timestamp:
Временная метка является эквивалентом даты и времени в большинстве случаев. Проверьте:
Но если вы действительно хотите ванильное свидание, вы все равно можете сделать:
Временные метки намного мощнее, чем даты, в том числе при работе с часовыми поясами. На самом деле, временные метки настолько мощные, что жаль, что они так плохо документированы ...
источник
Один из способов преобразования даты в дату, который еще не был упомянут:
источник
Вы можете использовать easy_date, чтобы сделать это легко:
источник
Если вам нужно что-то быстрое,
datetime_object.date()
выдает дату объекта datetime.источник
date
кdatetime
.datetime
.date()
Я новичок в Python. Но этот код работал для меня, который преобразует указанный ввод, который я предоставляю в datetime. Вот код Поправьте меня если я ошибаюсь.
источник
datetime.date()
объект, а не строка .