Python datetime - définition de l'heure et des minutes fixes après l'utilisation de strptime pour obtenir le jour, le mois, l'année

174

J'ai réussi à convertir quelque chose de 26 Sep 2012format en 26-09-2012utilisant:

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

Cependant, je ne sais pas comment régler l'heure et les minutes de quelque chose comme ci-dessus à 11 h 59. Est-ce que quelqu'un sait comment faire ça?

Notez que cela peut être une date future ou une date aléatoire, pas seulement la date actuelle.

user1678031
la source

Réponses:

363

Utilisez datetime.replace:

from datetime import datetime
date = datetime.strptime('26 Sep 2012', '%d %b %Y')
newdate = date.replace(hour=11, minute=59)
nneonneo
la source
Merci pour la réponse rapide! :) Juste curieux de savoir s'il existe un moyen de le faire sans la variable de date supplémentaire? (Je suis un débutant en python)
user1678031
2
Oui, fais-le date = datetime.strptime('26 Sep 2012', '%d %b %Y').replace(hour=11, minute=59). J'ai utilisé la variable supplémentaire pour que la ligne ne soit pas trop longue :)
nneonneo
14
A noter également: datetime.replaceretourne une nouvelle copie du datetime (puisque datetimeest immuable): c'est comme str.replaceà cet égard.
nneonneo
Comment puis-je tout supprimer après le '2016-06-01' pour que l'heure minute et la seconde disparaissent?
PV8
46

datetime.replace () fournira les meilleures options. En outre, il permet de remplacer le jour, l'année et le mois.

Supposons que nous ayons un datetimeobjet et que la date soit représentée par: "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
la source
8
Quelle est la valeur ajoutée de votre réponse par rapport à celle de nneonneo publiée 5 ans avant la vôtre?
Samuel Dauzon