Existem duas partes:
- Converta o carimbo de data / hora unix ("segundos desde a época") para a hora local
- Exibe a hora local no formato desejado.
Uma maneira portátil de obter a hora local que funciona, mesmo que o fuso horário local tenha um deslocamento de utc diferente no passado e o python não tenha acesso ao banco de dados tz, é usar um pytz
fuso horário:
#!/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 exibi-lo, você pode usar qualquer formato de hora suportado pelo seu sistema, por exemplo:
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
Se você não precisar de um horário local, obtenha um horário UTC legível:
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
Se você não se importa com os problemas de fuso horário que podem afetar a data retornada ou se o python tem acesso ao banco de dados tz no seu sistema:
local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))
No Python 3, você pode obter um datetime com reconhecimento de fuso horário usando apenas stdlib (o deslocamento UTC pode estar errado se o python não tiver acesso ao banco de dados tz no seu sistema, por exemplo, no 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)"))
As funções do time
módulo são invólucros finos em torno da API C correspondente e, portanto, podem ser menos portáteis que os datetime
métodos correspondentes , caso contrário, você também pode usá-los:
#!/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))