Hay dos partes:
- Convierta la marca de tiempo de Unix ("segundos desde época") a la hora local
- Mostrar la hora local en el formato deseado.
Una forma portátil de obtener la hora local que funciona incluso si la zona horaria local tenía un desplazamiento utc diferente en el pasado y python no tiene acceso a la base de datos tz es usar una pytz
zona horaria:
#!/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)
Para mostrarlo, puede usar cualquier formato de hora que sea compatible con su sistema, por ejemplo:
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 no necesita una hora local, para obtener una hora UTC legible en su lugar:
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
Si no le importan los problemas de zona horaria que podrían afectar la fecha de devolución o si python tiene acceso a la base de datos tz en su sistema:
local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))
En Python 3, puede obtener una fecha y hora con reconocimiento de zona horaria utilizando solo stdlib (el desplazamiento UTC puede ser incorrecto si python no tiene acceso a la base de datos tz en su sistema, por ejemplo, en 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)"))
Las funciones del time
módulo son envoltorios delgados alrededor de la API C correspondiente y, por lo tanto, pueden ser menos portátiles que los datetime
métodos correspondientes; de lo contrario, también podría usarlos:
#!/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))