आईएसओ 8601 समय प्रारूप एक समय क्षेत्र नाम की दुकान नहीं है, केवल इसी यूटीसी ऑफसेट संरक्षित है।
पायथन 3 में UTC ऑफसेट को संरक्षित करते हुए एक फ़ाइल cIME को ISO 8601 टाइम स्ट्रिंग में बदलने के लिए:
>>> 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'
कोड मानता है कि आपका स्थानीय समय क्षेत्र पूर्वी समय क्षेत्र (ET) है और यह कि आपका सिस्टम दिए गए POSIX टाइमस्टैम्प के लिए एक सही UTC ऑफसेट प्रदान करता है (ts
) के , अर्थात, Python के पास आपके सिस्टम या समय क्षेत्र में एक ऐतिहासिक timezone डेटाबेस तक पहुँच है। नियत तिथि पर समान नियम।
यदि आपको एक पोर्टेबल समाधान की आवश्यकता है; का उपयोग 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)'
नोट: नहीं, :
यूटीसी ऑफसेट और EST
टाइमजोन संक्षेप में आईएसओ 8601 समय प्रारूप का हिस्सा नहीं है। यह अद्वितीय नहीं है।
एक ही पुस्तकालय के विभिन्न पुस्तकालय / विभिन्न संस्करण एक ही तिथि / समयक्षेत्र के लिए अलग-अलग समय क्षेत्र नियमों का उपयोग कर सकते हैं। यदि यह भविष्य की तारीख है तो नियम अभी तक अज्ञात हो सकते हैं। दूसरे शब्दों में, समान यूटीसी समय आपके द्वारा उपयोग किए जाने वाले नियमों के आधार पर एक अलग स्थानीय समय के अनुरूप हो सकता है - आईएसओ 8601 प्रारूप में एक समय की बचत यूटीसी समय और स्थानीय समय को संरक्षित करता है जो आपके प्लेटफॉर्म पर वर्तमान समय क्षेत्र के नियमों से मेल खाती है। । यदि आपके पास अलग-अलग नियम हैं, तो आपको स्थानीय समय को एक अलग प्लेटफॉर्म पर पुनर्गणना करने की आवश्यकता हो सकती है।