J'ai une variable int qui est en fait des secondes (permet d'appeler ce nombre de secondes X
). J'ai besoin d'obtenir comme résultat la date et l'heure actuelles (au format datetime) moins X
secondes.
Si X
est 65 et la date actuelle est 2014-06-03 15:45:00
, alors je dois obtenir le résultat 2014-06-03 15:43:45
.
Je fais cela sur Python 3.3.3 et je sais que je pourrais probablement utiliser le module datetime
mais je n'ai pas eu de succès jusqu'à présent.
En effet, l'utilisation du module datetime
:
import datetime
X = 65
result = datetime.datetime.now() - datetime.timedelta(seconds=X)
Vous devriez lire la documentation de ce paquet pour apprendre à l'utiliser!
>>> from datetime import datetime, timedelta
>>> now = datetime.now()
>>> now
datetime.datetime(2014, 6, 3, 22, 55, 9, 680637)
>>> now - timedelta(seconds=15)
datetime.datetime(2014, 6, 3, 22, 54, 54, 680637)
C'est une solution de bibliothèque de base, généralement pour cette tâche, je préfère utiliser une classe tierce avec dateutil.relativedelta
, il a plus de paramètres et une plus grande flexibilité.
Pour développer la réponse de @ julienc, (au cas où cela serait utile à quelqu'un)
Si vous autorisez X à accepter le positif ou le négatif et changez l'instruction de soustraction en une instruction d'addition, vous pouvez avoir une fonction d'ajustement du temps plus intuitive (vous n'avez donc pas besoin d'ajouter des négatifs aux négatifs pour obtenir des positifs) comme ceci:
def adjustTimeBySeconds(time, delta):
return time + datetime.timedelta(seconds=delta)
time = datetime.datetime.now()
X = -65
print(adjustTimeBySeconds(time, X))
X = 65
print(adjustTimeBySeconds(time, X))