2009-08-28 12 views
6

मैं अपने एनएसडीट्स को एक अंतरराष्ट्रीय प्रारूप में फ़ाइल में संग्रहीत करता हूं जब आप एनएसडीएटी पर विवरण कहते हैं।एनएसडीएटी के विवरण को एनएसडीएट में कनवर्ट करें?

हालांकि, मुझे नहीं पता कि स्ट्रिंग-प्रारूप से एनएसडीएट ऑब्जेक्ट में वापस कैसे जाना है। एनएसडीएटफॉर्मेटर कुछ प्रारूपों तक ही सीमित है जो अंतर्राष्ट्रीय एक सहित नहीं हैं।

मुझे स्ट्रिंग-प्रारूप से वापस कैसे जाना चाहिए?

उत्तर

25

जेफ सही है, NSCoding शायद NSDate ऑब्जेक्ट्स को क्रमबद्ध करने का पसंदीदा तरीका है। वैसे भी, यदि आप वास्तव में दिनांक को सादे दिनांक स्ट्रिंग के रूप में सहेजना चाहते हैं, तो यह आपकी मदद कर सकता है:

दरअसल, NSDateFormatter पूर्वनिर्धारित प्रारूपों तक सीमित नहीं है। आप dateFormat संपत्ति के माध्यम से एक मनमाना कस्टम प्रारूप सेट कर सकते हैं। निम्नलिखित कोड "अंतर्राष्ट्रीय प्रारूप" यानी दिनांक तारों को पार्स करने में सक्षम होना चाहिए। प्रारूप NSDate के -description उपयोग करता है:

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss ZZZ"; 
NSDate* date = [dateFormatter dateFromString:@"2001-03-24 10:45:32 +0600"]; 

प्रारूप स्ट्रिंग वाक्य रचना पर एक पूर्ण संदर्भ के लिए, Unicode standard पर एक नजर है।

हालांकि, -description से सावधान रहें - इन विधियों का उत्पादन आमतौर पर मानव पाठकों (उदाहरण के लिए लॉग संदेश) को लक्षित किया जाता है और यह गारंटी नहीं है कि यह एक नए एसडीके संस्करण में अपना आउटपुट प्रारूप नहीं बदलेगा!

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss ZZZ"; 
NSString* dateString = [dateFormatter stringFromDate:[NSDate date]]; 
+0

हां, मुझे क्रॉस-प्लेटफ़ॉर्म विनिमय योग्य दिनांक तारों की आवश्यकता है। इसे हल करना चाहिए। धन्यवाद! –

0

मैं एक NSDateFormatter सफलतापूर्वक निम्न विधि द्वारा स्ट्रिंग पार्स करने के लिए स्थापित करने की कोशिश करेगा:

- (NSDate *)dateFromString:(NSString *)string 

नोट यह आप थोड़ी देर के NSDateFormatter सिर्फ सही सफलतापूर्वक अपने स्ट्रिंग पार्स करने में सेट करने के लिए ले सकता है कि ।

यदि आप इस तरह के प्रोग्राम-फेस डेटा को स्टोर करने जा रहे हैं तो मैं इसे आसानी से एक्सेस प्रारूप में संग्रहीत करने की भी सिफारिश करता हूं, उदाहरण के लिए, CFAbsoluteTime। एक बार जब आप इसे अपने प्रोग्राम में रखते हैं तो आप इसे अंतरराष्ट्रीय प्रारूप में या कुछ और मानव-पठनीय में प्रारूपित कर सकते हैं।

4

किसी फ़ाइल में विवरण सहेजने के बजाय, ऑब्जेक्ट को स्वयं क्यों नहीं बचाएं? NSDateNSCoding प्रोटोकॉल के अनुरूप है; ऑब्जेक्ट को सहेजने का मतलब है कि आपको इसका अनुवाद करने की चिंता करने की ज़रूरत नहीं है। अधिक जानकारी के लिए NSCoding protocol reference देखें।

0

इसे एनएसडीएटी स्वीकार करने के प्रारूप में कनवर्ट करें और फिर रूपांतरण को वापस करें।

वैकल्पिक रूप से, जिस पर आप एनएसडीएट का जिक्र कर रहे हैं उसके आधार पर (!) InitWithString को अंतरराष्ट्रीय मानक तिथियों को कवर करना चाहिए।

+0

अब दुर्भाग्य से, 'initWithString:: आप बल्कि अपनी तिथि वस्तु क्रमानुसार करने में एक ही तिथि फ़ॉर्मेटर का उपयोग करना चाहिए' मान्य नहीं है। – ThomasW

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^