Data / hora do Python - definindo horas e minutos fixos após o uso do strptime para obter dia, mês e ano

174

Eu converti com sucesso algo do 26 Sep 2012formato para 26-09-2012usar:

datetime.strptime(request.POST['sample_date'],'%d %b %Y')

No entanto, não sei como definir a hora e o minuto de algo como o acima para 11:59. Alguém sabe como fazer isso?

Observe que pode ser uma data futura ou qualquer outra aleatória, não apenas a data atual.

user1678031
fonte

Respostas:

363

Use datetime.replace:

from datetime import datetime
date = datetime.strptime('26 Sep 2012', '%d %b %Y')
newdate = date.replace(hour=11, minute=59)
nneonneo
fonte
Obrigado pela resposta rápida! :) Só estou curioso se existe uma maneira de fazer isso sem a variável extra de data? (Eu sou um novato em python)
user1678031 18/09/2012
2
Sim, apenas faça date = datetime.strptime('26 Sep 2012', '%d %b %Y').replace(hour=11, minute=59). Eu usei a variável extra para que a linha não foi muito tempo :)
nneonneo
14
Também vale a pena notar: datetime.replaceretorna uma nova cópia do datetime (já que datetimeé imutável): é como a str.replaceesse respeito.
Nneonneo 18/09/12
Como posso remover tudo após '2016-06-01' para que a hora minuto e o segundo desapareçam?
PV8
46

datetime.replace () fornecerá as melhores opções. Além disso, fornece facilidade para substituir dia, ano e mês.

Suponha que tenhamos um datetimeobjeto e a data seja representada como: "2017-05-04"

>>> from datetime import datetime
>>> date = datetime.strptime('2017-05-04',"%Y-%m-%d")
>>> print(date)
2017-05-04 00:00:00
>>> date = date.replace(minute=59, hour=23, second=59, year=2018, month=6, day=1)
>>> print(date)
2018-06-01 23:59:59
Abhay Chauhan
fonte
8
Qual é o valor agregado da sua resposta em relação à resposta de nneonneo publicada 5 anos antes da sua?
Samuel Dauzon 23/08/19