Il se compose de deux parties:
- Convertir l'horodatage Unix ("secondes depuis l'époque") en heure locale
- Affichez l'heure locale au format souhaité.
Un moyen portable d'obtenir l'heure locale qui fonctionne même si le fuseau horaire local avait un décalage utc différent dans le passé et que python n'a pas accès à la base de données tz consiste à utiliser un pytz
fuseau horaire:
#!/usr/bin/env python
from datetime import datetime
import tzlocal # $ pip install tzlocal
unix_timestamp = float("1284101485")
local_timezone = tzlocal.get_localzone() # get pytz timezone
local_time = datetime.fromtimestamp(unix_timestamp, local_timezone)
Pour l'afficher, vous pouvez utiliser n'importe quel format d'heure pris en charge par votre système, par exemple:
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f%z (%Z)"))
print(local_time.strftime("%B %d %Y")) # print date in your format
Si vous n'avez pas besoin d'une heure locale, pour obtenir une heure UTC lisible à la place:
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
Si vous ne vous souciez pas des problèmes de fuseau horaire qui pourraient affecter la date de retour ou si python a accès à la base de données tz sur votre système:
local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))
Sur Python 3, vous pouvez obtenir un datetime sensible au fuseau horaire en utilisant uniquement stdlib (le décalage UTC peut être incorrect si python n'a pas accès à la base de données tz sur votre système, par exemple, sur Windows):
#!/usr/bin/env python3
from datetime import datetime, timezone
utc_time = datetime.fromtimestamp(unix_timestamp, timezone.utc)
local_time = utc_time.astimezone()
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f%z (%Z)"))
Les fonctions du time
module sont des enveloppes minces autour de l'API C correspondante et par conséquent, elles peuvent être moins portables que les datetime
méthodes correspondantes , sinon vous pouvez également les utiliser:
#!/usr/bin/env python
import time
unix_timestamp = int("1284101485")
utc_time = time.gmtime(unix_timestamp)
local_time = time.localtime(unix_timestamp)
print(time.strftime("%Y-%m-%d %H:%M:%S", local_time))
print(time.strftime("%Y-%m-%d %H:%M:%S+00:00 (UTC)", utc_time))