python - पाइथन में आईएसओ समय (आईएसओ 8601)?




5 Answers

मुझे doc में datetime.isoformat मिला; ऐसा लगता है कि आप क्या चाहते हैं:

datetime.isoformat([sep])

Return a string representing the date and time in ISO 8601 format, YYYY-MM-DDTHH:MM:SS.mmmmmm or, if microsecond is 0, YYYY-MM-DDTHH:MM:SS

If utcoffset() does not return None, a 6-character string is appended, giving the UTC offset in (signed) hours and minutes: YYYY-MM-DDTHH:MM:SS.mmmmmm+HH:MM or, if microsecond is 0 YYYY-MM-DDTHH:MM:SS+HH:MM

The optional argument sep (default 'T') is a one-character separator, placed between the date and time portions of the result. For example,
>>>

>>> from datetime import tzinfo, timedelta, datetime
>>> class TZ(tzinfo):
...     def utcoffset(self, dt): return timedelta(minutes=-399)
...
>>> datetime(2002, 12, 25, tzinfo=TZ()).isoformat(' ')
'2002-12-25 00:00:00-06:39'
python datetime iso8601

मेरे पास एक फाइल है पायथन में, मैं अपने निर्माण समय को लेना चाहता हूं, और इसे आईएसओ समय (आईएसओ 8601) स्ट्रिंग में परिवर्तित करना चाहता हूं, जबकि इस तथ्य को संरक्षित करते हुए कि यह पूर्वी समय क्षेत्र में बनाया गया था

मैं फ़ाइल का सीटाइम कैसे ले सकता हूं और इसे एक आईएसओ टाइम स्ट्रिंग में कैसे बदल सकता हूं, जो पूर्वी समय क्षेत्र को इंगित करता है (और यदि आवश्यक हो तो खाता डेलाइट बचत समय लेता है)?




XSD डेटाटाइम प्रारूप में कनवर्ट करने के लिए मैं यहां उपयोग करता हूं:

from datetime import datetime    
datetime.now().replace(microsecond=0).isoformat()
# You get your iso string

XSD दिनांक समय प्रारूप की तलाश करते समय मैं इस प्रश्न पर आया। मुझे isoformat से microseconds को हटाने की जरूरत है। चीयर्स!




फ़ाइल निर्माण समय और स्वरूपण के लिए time.strftime और time.strftime संयोजन प्राप्त करने के लिए आपको os.stat का उपयोग करने की आवश्यकता होगी:

>>> import time
>>> import os
>>> t = os.stat('C:/Path/To/File.txt').st_ctime
>>> t = time.localtime(t)
>>> formatted = time.strftime('%Y-%m-%d %H:%M:%S', t)
>>> tz = str.format('{0:+06.2f}', float(time.timezone) / 3600)
>>> final = formatted + tz
>>> 
>>> final
'2008-11-24 14:46:08-02.00'

संपादित करें: gmtime() से gmtime() तक स्विच किया गया।




मैं जरेक से सहमत हूं, और मैं यह भी ध्यान देता हूं कि आईएसओ ऑफ़सेट विभाजक चरित्र एक कोलन है, इसलिए मुझे लगता है कि अंतिम जवाब होना चाहिए:

isodate.datetime_isoformat(datetime.datetime.now()) + str.format('{0:+06.2f}', -float(time.timezone) / 3600).replace('.', ':')



import datetime, time    
def convert_enddate_to_seconds(self, ts):
    """Takes ISO 8601 format(string) and converts into epoch time."""
     dt = datetime.datetime.strptime(ts[:-7],'%Y-%m-%dT%H:%M:%S.%f')+\
                datetime.timedelta(hours=int(ts[-5:-3]),
                minutes=int(ts[-2:]))*int(ts[-6:-5]+'1')
    seconds = time.mktime(dt.timetuple()) + dt.microsecond/1000000.0
    return seconds 

>>> import datetime, time
>>> ts = '2012-09-30T15:31:50.262-08:00'
>>> dt = datetime.datetime.strptime(ts[:-7],'%Y-%m-%dT%H:%M:%S.%f')+ datetime.timedelta(hours=int(ts[-5:-3]), minutes=int(ts[-2:]))*int(ts[-6:-5]+'1')
>>> seconds = time.mktime(dt.timetuple()) + dt.microsecond/1000000.0
>>> seconds
1348990310.26



Related