Є дві частини:
- Перетворіть часову позначку 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
модуля - це тонкі обгортки навколо відповідного API 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))