Python datetime: configuración de hora y minuto fijos después de usar strptime para obtener el día, mes y año

174

He convertido con éxito algo de 26 Sep 2012formato para 26-09-2012usar:

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

Sin embargo, no sé cómo configurar la hora y los minutos de algo como lo anterior a las 11:59. ¿Alguien sabe como hacer esto?

Tenga en cuenta que esta puede ser una fecha futura o cualquiera aleatoria, no solo la fecha actual.

usuario1678031
fuente

Respuestas:

363

Uso datetime.replace:

from datetime import datetime
date = datetime.strptime('26 Sep 2012', '%d %b %Y')
newdate = date.replace(hour=11, minute=59)
nneonneo
fuente
¡Gracias por la rápida respuesta! :) ¿Solo tiene curiosidad si hay una manera de hacerlo sin la variable de fecha adicional? (Soy un novato en python)
user1678031
2
Sí, solo hazlo date = datetime.strptime('26 Sep 2012', '%d %b %Y').replace(hour=11, minute=59).
Usé
14
También vale la pena señalar: datetime.replacedevuelve una nueva copia de la fecha y hora (ya que datetimees inmutable): es como str.replaceen ese sentido.
nneonneo
¿Cómo puedo eliminar todo después de '2016-06-01' para que esa hora minuto y segundo desaparezcan?
PV8
46

datetime.replace () proporcionará las mejores opciones. Además, proporciona facilidad para reemplazar el día, año y mes.

Supongamos que tenemos un datetimeobjeto y la fecha se representa 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
fuente
8
¿Cuál es el valor agregado de su respuesta contra la respuesta de nneonneo publicada 5 años antes que la suya?
Samuel Dauzon el