Есть две части:
- Преобразовать метку времени Unix («секунды с начала эпохи») в местное время
- Показать местное время в нужном формате.
Переносимый способ получить местное время, которое работает, даже если в прошлом местный часовой пояс имел другое смещение utc, а python не имеет доступа к базе данных tz, - это использовать pytz
часовой пояс:
#!/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)
Чтобы отобразить его, вы можете использовать любой формат времени, поддерживаемый вашей системой, например:
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
Если вам не нужно местное время, вместо этого получите читаемое время UTC:
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
Если вас не волнуют проблемы с часовым поясом, которые могут повлиять на возвращаемую дату или если у python есть доступ к базе данных tz в вашей системе:
local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))
На Python 3 вы можете получить дату и время с учетом часового пояса, используя только stdlib (смещение UTC может быть неправильным, если у python нет доступа к базе данных tz в вашей системе, например, в 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)"))
Функции из time
модуля являются тонкими обертками вокруг соответствующего C API, и поэтому они могут быть менее переносимыми, чем соответствующие datetime
методы, в противном случае вы также можете использовать их:
#!/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))