Comment ajouter des heures à l'heure actuelle en python

158

Je suis en mesure d'obtenir l'heure actuelle comme ci-dessous:

from datetime import datetime
str(datetime.now())[11:19]

Résultat

'19:43:20'

Maintenant, j'essaie d'ajouter 9 hoursà l'heure ci-dessus, comment puis-je ajouter des heures à l'heure actuelle en Python?

Shiva Krishna Bavandla
la source
12
Pour obtenir l'heure actuelle formatée de cette façon, jetez un œil àdatetime.now().strftime('%H:%M:%S')
eumiro

Réponses:

368
from datetime import datetime, timedelta

nine_hours_from_now = datetime.now() + timedelta(hours=9)
#datetime.datetime(2012, 12, 3, 23, 24, 31, 774118)

Et puis utilisez le formatage de chaîne pour obtenir les éléments pertinents:

>>> '{:%H:%M:%S}'.format(nine_hours_from_now)
'23:24:31'

Si vous formatez uniquement le datetime, vous pouvez utiliser:

>>> format(nine_hours_from_now, '%H:%M:%S')
'23:24:31'

Ou, comme @eumiro l'a souligné dans les commentaires - strftime

Jon Clements
la source
Pourquoi n'est-ce pas la meilleure réponse? Y a-t-il des effets secondaires? bug non signalé?
Braza
6
@Braza l'OP n'a tout simplement pas choisi de l'accepter. Aucun effet secondaire ni bogue.
Jon Clements
@JonClements Merci pour votre réponse :). Je l'ai testé et je confirme.
Braza
3
Ce n'est cependant pas sûr pour l'heure d'été.
Antti Haapala
1
La question demande comment ajouter des heures, mais la soustraction des heures peut être effectuée de deux manières: 1) Utilisez l'opérateur de soustraction ( -) au lieu de l'opérateur d'addition ( +); selon la documentation "les timedeltaobjets prennent en charge certains ajouts et soustractions avec la date et les datetimeobjets" 2) Passer une valeur négative à l'un des timedeltaparamètres; selon la documentation , "les arguments peuvent être des entiers, des longs ou des flottants, et peuvent être positifs ou négatifs."
The Red Pea
20

Importez datetime et timedelta :

>>> from datetime import datetime, timedelta
>>> str(datetime.now() + timedelta(hours=9))[11:19]
'01:41:44'

Mais le meilleur moyen est:

>>> (datetime.now() + timedelta(hours=9)).strftime('%H:%M:%S')
'01:42:05'

Vous pouvez vous référer strptimeetstrftime vous comporter pour mieux comprendre comment python traite le champ de dates et d'heure

mu 無
la source
Les liens vers les documents Python donnent des informations sur l' analyse et le formatage de la date et de l'heure .
hc_dev