Maintenant j'utilise
import datetime
print(datetime.datetime.now().strftime("%X"))
pour afficher l'heure actuelle sous forme de chaîne.
Le problème, c'est que mon ordinateur tourne sous Europe/Berlin
fuseau horaire et le décalage de +2 par rapport à UTC n’est pas comptabilisé ici. Au lieu de 19:22:26
il devrait afficher 21:22:26
Également différent des autres réponses que j'ai trouvées ici, je ne l'enregistre pas en appelant
datetime.datetime(2014, 7, 10, 18, 44, 59, 193982, tzinfo=<UTC>)
mais
datetime.datetime.now()
alors j'ai essayé (et j'ai échoué) ce qui suit:
>>> from pytz import timezone
>>> datetime.datetime.now().astimezone(timezone('Europe/Berlin'))
ValueError: astimezone() cannot be applied to a naive datetime
Ne peut pas poster comme réponse, car cette question est marquée comme fermée
Le serveur avec lequel j'ai eu ce problème n'existe plus. Quoi qu'il en soit, voici quelques autres points à vérifier:
Pour obtenir l'heure actuelle dans le fuseau horaire local en tant qu'objet date-heure naïf:
from datetime import datetime
naive_dt = datetime.now()
S'il ne renvoie pas l'heure prévue, cela signifie que votre ordinateur est mal configuré. Vous devriez le réparer en premier (il n’a aucun lien avec Python).
Pour obtenir l'heure actuelle en UTC en tant qu'objet datetime naïf:
naive_utc_dt = datetime.utcnow()
Pour obtenir l’heure actuelle en tant qu’objet datetime conscient dans Python 3.3+:
from datetime import datetime, timezone
utc_dt = datetime.now(timezone.utc) # UTC time
dt = utc_dt.astimezone() # local time
Pour obtenir l'heure actuelle dans le fuseau horaire indiqué à partir de la base de données tz:
import pytz
tz = pytz.timezone('Europe/Berlin')
berlin_now = datetime.now(tz)
Cela fonctionne pendant les transitions DST. Cela fonctionne si le fuseau horaire avait un décalage UTC différent dans le passé, c'est-à-dire qu'il fonctionne même si le fuseau horaire correspond à plusieurs objets tzinfo à des moments différents.