Format waktu ISO 8601 tidak menyimpan nama zona waktu, hanya UTC yang sesuai offset dipertahankan.
Untuk mengonversi file ctime ke string waktu ISO 8601 sambil mempertahankan offset UTC dengan Python 3:
>>> import os
>>> from datetime import datetime, timezone
>>> ts = os.path.getctime(some_file)
>>> dt = datetime.fromtimestamp(ts, timezone.utc)
>>> dt.astimezone().isoformat()
'2015-11-27T00:29:06.839600-05:00'
Kode ini mengasumsikan bahwa zona waktu lokal Anda adalah Zona Waktu Timur (ET) dan sistem Anda menyediakan zona waktu yang benar Offset UTC untuk stempel waktu POSIX tertentu (ts
), yaitu, Python memiliki akses ke database zona waktu historis di sistem Anda atau zona waktu memiliki aturan yang sama pada tanggal tertentu.
Jika Anda memerlukan solusi portabel; gunakan modul pytz
yang menyediakan akses ke basis data tz:
>>> import os
>>> from datetime import datetime
>>> import pytz # pip install pytz
>>> ts = os.path.getctime(some_file)
>>> dt = datetime.fromtimestamp(ts, pytz.timezone('America/New_York'))
>>> dt.isoformat()
'2015-11-27T00:29:06.839600-05:00'
Hasilnya sama dalam kasus ini.
Jika Anda memerlukan nama zona waktu/singkatan/id zona, simpanlah secara terpisah.
>>> dt.astimezone().strftime('%Y-%m-%d %H:%M:%S%z (%Z)')
'2015-11-27 00:29:06-0500 (EST)'
Catatan: tidak, :
dalam offset UTC dan singkatan zona waktu EST
bukan bagian dari format waktu ISO 8601. Itu tidak unik.
Pustaka yang berbeda/versi berbeda dari pustaka yang sama mungkin menggunakan aturan zona waktu yang berbeda untuk tanggal/zona waktu yang sama. Jika ini adalah tanggal yang akan datang maka peraturannya mungkin belum diketahui. Dengan kata lain, waktu UTC yang sama mungkin sesuai dengan waktu lokal yang berbeda tergantung pada aturan yang Anda gunakan -- menyimpan waktu dalam format ISO 8601 akan mempertahankan waktu UTC dan waktu lokal yang sesuai dengan waktu saat ini aturan zona yang digunakan pada platform Anda. Anda mungkin perlu menghitung ulang waktu setempat di platform lain jika memiliki aturan berbeda.
person
jfs
schedule
28.11.2015