Istnieją dwie części:
- Konwertuj uniksowy znacznik czasu („sekundy od epoki”) na czas lokalny
- Wyświetl czas lokalny w żądanym formacie.
Przenośnym sposobem na uzyskanie czasu lokalnego, który działa, nawet jeśli lokalna strefa czasowa miała w przeszłości inne przesunięcie utc, a python nie ma dostępu do bazy danych tz, należy użyć pytz
strefy czasowej:
#!/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)
Aby go wyświetlić, możesz użyć dowolnego formatu czasu obsługiwanego przez Twój system, np .:
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
Jeśli nie potrzebujesz czasu lokalnego, aby zamiast tego uzyskać czytelny czas UTC:
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
Jeśli nie przejmujesz się problemami strefy czasowej, które mogą wpłynąć na datę zwrotu lub jeśli python ma dostęp do bazy danych tz w twoim systemie:
local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))
W Pythonie 3 można uzyskać strefę czasową uwzględniającą strefę czasową, używając tylko stdlib (przesunięcie UTC może być nieprawidłowe, jeśli python nie ma dostępu do bazy danych tz w systemie, np. W systemie 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)"))
Funkcje z time
modułu są cienkimi opakowaniami wokół odpowiedniego interfejsu API języka C i dlatego mogą być mniej przenośne niż odpowiednie datetime
metody, w przeciwnym razie możesz ich również użyć:
#!/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))