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.

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)

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.