दिलचस्प पोस्ट
मोंगोडीबी – संग्रह के अंदर नेस्टेड आइटम की क्वेरी कैसे करें? मैं वीआईएम से सी प्रोग्राम कैसे चलाऊँ? फ़ाइलों के बीच वैश्विक चर का उपयोग करना? SO_RCVTIME और SO_RCVTIMEO बूस्ट को प्रभावित नहीं करते हैं। एएसआईओ संचालन जावास्क्रिप्ट में परिभाषित होने से पहले मैं फ़ंक्शन का उपयोग क्यों कर सकता / सकती हूं? कैसे obfuscated संपत्ति के नाम को बहाल करने के लिए? क्या std :: स्ट्रिंग में शून्य टर्मिनेटर है? एक आलेख में कई पंक्तियाँ प्लॉट करें मैं अपने आईफोन सिम्युलेटर को .ipa फ़ाइल कैसे स्थापित कर सकता हूं I सीडीएटीए एचटीएमएल में क्या है? जावा – एक यूआरएल के पुनर्निर्देशित यूआरएल को कैसे खोजें? XML / HTML के लिए NSString एनकोड करें कक्षा परिभाषा में स्थिर कॉन्स्ट पूर्णांक सदस्यों को परिभाषित करना फ़ाइल डिस्क्रिप्टर और फ़ाइल सूचक के बीच क्या अंतर है? द्विआधारी कारक और लेबल के प्रतिशत के साथ स्टैक्ड प्रतिशत बार प्लॉट (जीजीप्लोट के साथ)

टाइमटेम्प्स ऑफसेट के साथ ऑफटाईट को टाइमटाइम कन्वर्ट करें

मैं "2012-07-24 टी 23: 14: 29-07: 00" प्रारूप के समय-टिकटों को बदलने की कोशिश कर रहा हूं जो कि अजगर में समय-समय पर ऑब्जेक्ट्स को सफ़्तीम विधि का उपयोग कर रहा है। समस्या अंत में ऑफसेट (-07: 00) के साथ है। ऑफ़सेट के बिना मैं सफलतापूर्वक कर सकता हूं

time_str = "2012-07-24T23:14:29" time_obj=datetime.datetime.strptime(time_str,'%Y-%m-%dT%H:%M:%S') 

लेकिन ऑफसेट के साथ मैंने कोशिश की

 time_str = "2012-07-24T23:14:29-07:00" time_obj=datetime.datetime.strptime(time_str,'%Y-%m-%dT%H:%M:%S-%z'). 

लेकिन यह एक वैल्यू एरर देता है जिसमें "z" एक बुरे निर्देश है।

काम के लिए कोई भी विचार?

वेब के समाधान से एकत्रित समाधान "टाइमटेम्प्स ऑफसेट के साथ ऑफटाईट को टाइमटाइम कन्वर्ट करें"

पायथन 2 strptime() फ़ंक्शन वास्तव में strptime() लिए %z प्रारूप का समर्थन नहीं करता है (क्योंकि अंतर्निहित समय। time.strptime() फ़ंक्शन इसका समर्थन नहीं करता है)। आपके पास दो विकल्प हैं:

  • समय क्षेत्र पर ध्यान न दें जब strptime साथ पार्स करना:

     time_obj = datetime.datetime.strptime(time_str[:19], '%Y-%m-%dT%H:%M:%S') 
  • dateutil मॉड्यूल का उपयोग करें, यह पार्स फ़ंक्शन dateutil के साथ सौदा करता है :

     from dateutil.parser import parse time_obj = parse(time_str) 

कमांड प्रॉम्प्ट पर त्वरित डेमो:

 >>> from dateutil.parser import parse >>> parse("2012-07-24T23:14:29-07:00") datetime.datetime(2012, 7, 24, 23, 14, 29, tzinfo=tzoffset(None, -25200)) 

आप पायथन 3.2 या नए में अपग्रेड भी कर सकते हैं, जहां टाइमज़ोन समर्थन को उस बिंदु पर सुधार किया गया है जो कि %z काम करेगा, बशर्ते आपने अंतिम को हटा दिया : इनपुट से, और - %z से पहले:

 >>> import datetime >>> time_str = "2012-07-24T23:14:29-07:00" >>> datetime.datetime.strptime(time_str, '%Y-%m-%dT%H:%M:%S%z') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python3.4/_strptime.py", line 500, in _strptime_datetime tt, fraction = _strptime(data_string, format) File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python3.4/_strptime.py", line 337, in _strptime (data_string, format)) ValueError: time data '2012-07-24T23:14:29-07:00' does not match format '%Y-%m-%dT%H:%M:%S%z' >>> ''.join(time_str.rsplit(':', 1)) '2012-07-24T23:14:29-0700' >>> datetime.datetime.strptime(''.join(time_str.rsplit(':', 1)), '%Y-%m-%dT%H:%M:%S%z') datetime.datetime(2012, 7, 24, 23, 14, 29, tzinfo=datetime.timezone(datetime.timedelta(-1, 61200))) 

पायथन 3.2+ में:

 from datetime import datetime time_str = "2012-07-24T23:14:29-0700" dt_aware = datetime.strptime(time_str, '%Y-%m-%dT%H:%M:%S%z') print(dt_aware.isoformat('T')) # -> 2012-07-24T23:14:29-07:00 

नोट: यह समर्थन नहीं करता है : -0700 भाग में (दोनों स्वरूप आरएफसी 3339 द्वारा अनुमति है)। Datetime देखें : RFC 3339 दिनांक और समय को पार्स करने की क्षमता जोड़ें ।

पुराने पायथन संस्करणों जैसे कि पायथन 2.7 पर, आप मैन्युअल रूप से ऑफसेट यूटसी को पार्स कर सकते हैं:

 from datetime import datetime time_str = "2012-07-24T23:14:29-0700" # split the utc offset part naive_time_str, offset_str = time_str[:-5], time_str[-5:] # parse the naive date/time part naive_dt = datetime.strptime(naive_time_str, '%Y-%m-%dT%H:%M:%S') # parse the utc offset offset = int(offset_str[-4:-2])*60 + int(offset_str[-2:]) if offset_str[0] == "-": offset = -offset dt = naive_dt.replace(tzinfo=FixedOffset(offset)) print(dt.isoformat('T')) 

जहां FixedOffset वर्ग यहां परिभाषित किया गया है ।

ValueError: 'z' is a bad directive in format...

(ध्यान दें: मुझे अपने मामले में अजगर 2.7 पर रहना होगा)

मेरे पास इसी तरह की समस्या है जो git log --date=iso8601 के आउटपुट से दिनांक को पार्स git log --date=iso8601 जो वास्तव में ISO8601 प्रारूप नहीं है (इसलिए बाद के संस्करण में --date=iso8601-strict के अलावा)।

चूंकि मैं django का उपयोग कर रहा हूं इसलिए मैं वहां उपयोगिताओं का लाभ उठा सकता हूं।

https://github.com/django/django/blob/master/django/utils/dateparse.py

 >>> from django.utils.dateparse import parse_datetime >>> parse_datetime('2013-07-23T15:10:59.342107+01:00') datetime.datetime(2013, 7, 23, 15, 10, 59, 342107, tzinfo=+0100) 

strptime बजाय आप अपनी स्वयं की नियमित अभिव्यक्ति का उपयोग कर सकते हैं