Ada dua bagian:
- Ubah cap waktu unix ("detik sejak zaman") menjadi waktu lokal
- Tampilkan waktu setempat dalam format yang diinginkan.
Cara portabel untuk mendapatkan waktu lokal yang berfungsi walaupun zona waktu lokal memiliki offset utc yang berbeda di masa lalu dan python tidak memiliki akses ke basis data tz adalah dengan menggunakan pytz
zona waktu:
#!/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)
Untuk menampilkannya, Anda dapat menggunakan format waktu apa pun yang didukung oleh sistem Anda mis:
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
Jika Anda tidak memerlukan waktu lokal, untuk mendapatkan waktu UTC yang dapat dibaca sebagai gantinya:
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
Jika Anda tidak peduli dengan masalah zona waktu yang mungkin memengaruhi tanggal dikembalikan atau apakah python memiliki akses ke database tz di sistem Anda:
local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))
Pada Python 3, Anda bisa mendapatkan datetime sadar-waktu hanya menggunakan stdlib (offset UTC mungkin salah jika python tidak memiliki akses ke database tz pada sistem Anda misalnya, pada 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)"))
Fungsi dari time
modul adalah pembungkus tipis di sekitar API C yang sesuai dan oleh karena itu mereka mungkin lebih portabel daripada datetime
metode yang sesuai jika tidak, Anda juga dapat menggunakannya:
#!/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))