รูปแบบเวลามาตรฐาน ISO 8601จะไม่จัดเก็บชื่อโซนเวลาเพียง UTC สอดคล้องชดเชยการเก็บรักษาไว้
ในการแปลงไฟล์ ctime เป็นสตริงเวลา ISO 8601 ในขณะที่รักษาการชดเชย UTC ใน 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'
รหัสจะถือว่าเขตเวลาท้องถิ่นของคุณคือ Eastern Time Zone (ET) และระบบของคุณมี UTC offset ที่ถูกต้องสำหรับ POSIX Timestamp ที่กำหนด ( ts
) เช่น Python มีการเข้าถึงฐานข้อมูลเขตเวลาประวัติศาสตร์ในระบบของคุณหรือเขตเวลามี กฎเดียวกันในวันที่กำหนด
หากคุณต้องการโซลูชันแบบพกพา ใช้pytz
โมดูลที่ให้การเข้าถึงฐานข้อมูล 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'
ผลลัพธ์จะเหมือนกันในกรณีนี้
หากคุณต้องการชื่อเขตเวลา / ตัวย่อ / รหัสเขตให้เก็บแยกไว้
>>> dt.astimezone().strftime('%Y-%m-%d %H:%M:%S%z (%Z)')
'2015-11-27 00:29:06-0500 (EST)'
หมายเหตุ: ไม่:
ใน UTC ออฟเซ็ตและEST
ตัวย่อเขตเวลาไม่ได้เป็นส่วนหนึ่งของรูปแบบเวลา ISO 8601 มันไม่ซ้ำกัน
ไลบรารีที่แตกต่างกัน / เวอร์ชันที่แตกต่างกันของไลบรารีเดียวกันอาจใช้กฎเขตเวลาที่แตกต่างกันสำหรับวันที่ / เขตเวลา หากเป็นวันที่ในอนาคตอาจยังไม่ทราบกฎ กล่าวอีกนัยหนึ่งเวลา UTC เดียวกันอาจสอดคล้องกับเวลาท้องถิ่นที่แตกต่างกันขึ้นอยู่กับกฎที่คุณใช้ - ประหยัดเวลาในรูปแบบ ISO 8601 รักษาเวลา UTC และเวลาท้องถิ่นที่สอดคล้องกับกฎโซนเวลาปัจจุบันที่ใช้งานบนแพลตฟอร์มของคุณ . คุณอาจต้องคำนวณเวลาท้องถิ่นบนแพลตฟอร์มอื่นหากมีกฎที่แตกต่างกัน