आईएसओ -8601 वास्तव में कैसे काम करता है इसके संदर्भ में मैंने इस Wikipedia article को देखा। मैं कोई कोको विशेषज्ञ नहीं हूं, लेकिन मैं सट्टेबाजी कर रहा हूं यदि आप उस स्ट्रिंग को पार्स कर सकते हैं और घटक घंटे, मिनट, दूसरा, दिन इत्यादि निकाल सकते हैं, इसे एनएसटीइम इंटरवल में ले जाना आसान होना चाहिए। मुश्किल हिस्सा इसे पार्स कर रहा है। मैं शायद ऐसा कुछ करूंगा:
सबसे पहले, स्ट्रिंग को दो अलग तारों में विभाजित करें: एक दिन का प्रतिनिधित्व करता है, और एक बार का प्रतिनिधित्व करता है। NSString एक उदाहरण विधि componentsSeparatedByString है:। NSString है कि अपने मूल पैरामीटर में पारित द्वारा अलग NSString की सबस्ट्रिंग एक NSArray रिटर्न वह कुछ इस तरह दिखेगा:
NSString* iso8601 = /*However you're getting your string in*/
NSArray* iso8601Parts = [iso8601 componentsSeparatedByString:@"T"];
अगला, प्रत्येक के लिए iso8601Parts के पहले तत्व खोज संभावित दिन अवधि संकेतक (वाई, एम, डब्ल्यू, और डी) के। जब आप एक पाते हैं, तो सभी पूर्ववर्ती अंकों (और संभवतः एक दशमलव बिंदु) को पकड़ें, उन्हें एक फ्लोट पर डालें, और उन्हें कहीं भी स्टोर करें। याद रखें कि अगर केवल एक समय तत्व था, तो iso8601Parts [0] खाली स्ट्रिंग होगी।
फिर, वही काम करें जो संभव समय संकेतक (एच, एम, एस) के लिए iso8601Parts के दूसरे तत्व में समय भागों की तलाश में है। याद रखें कि अगर केवल एक दिन घटक था (यानी, मूल स्ट्रिंग में कोई 'टी' वर्ण नहीं था), तो iso8601Partts केवल लंबाई का होगा, और दूसरे तत्व तक पहुंचने का प्रयास सीमा अपवाद से बाहर हो जाएगा ।
एक एनएसटीइमइंटरवाल कई सेकंड्स को केवल लंबे समय तक संग्रहित करता है, इसलिए अलग-अलग टुकड़ों को आप सेकेंड में खींचते हैं, उन्हें एक साथ जोड़ते हैं, उन्हें अपने एनएसटीइम इंटरवल में स्टोर करते हैं, और आप सेट हैं।
क्षमा करें, मुझे पता है कि आपने इसे करने के लिए "आसान" तरीका मांगा है, लेकिन मेरे (स्वीकार्य रूप से प्रकाश) के आधार पर और एपीआई के ज्ञान के आधार पर, यह करने का सबसे आसान तरीका है।
एक छोटा पार्सर लिखना बिल्कुल ठीक नहीं था जब मैंने एक आसान समाधान खोजना शुरू किया, लेकिन ऐसा लगता है कि वास्तव में कोई दूसरा रास्ता नहीं है। मैंने सोचा कि NSDateFormatter के साथ एक विशेष प्रारूप स्ट्रिंग का उपयोग करके एक चाल हो सकती है, लेकिन यह समय अंतराल के साथ काम नहीं कर रहा है। वैसे भी, मैं एक समान पार्सर लिखना समाप्त कर दिया। मदद करने के लिए सभी को धन्यवाद। – Zargony
उपरोक्त कोड उदाहरण के साथ ध्यान में रखने के लिए एक छोटी सी चीज (हां, मुझे एहसास है कि यह संभवतः एक बिंदु साबित करने के लिए था, वास्तविक खपत के लिए नहीं)। आईएसओ 8601 मानक अवधि मानों को आंशिक मानों (यानी 1.5, 0.6, आदि) के रूप में निर्दिष्ट करने की अनुमति देता है जिसे "।" द्वारा सीमित किया जा सकता है। या ","। –