2013-10-24 5 views
5

मेरे पास कई डेट स्ट्रिंग हैं जिन्हें मुझे एनएसडीट्स में कनवर्ट करने की आवश्यकता है।हार्डवेयर-निर्भर एनएसडीएफ़फॉर्मेटर तिथिप्रोमस्ट्रिंग: बग (रिटर्न शून्य)

NSString *s = [pair objectForKey:@"nodeContent"]; 
NSDateFormatter *f = [[NSDateFormatter alloc] init]; 
[f setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZ"]; 
self.date = [f dateFromString:s]; 

ऊपर कोड सभी उपकरणों और सिमुलेटर हम परीक्षण किया है में ठीक काम करता है: मेरे पार्स कोड निम्नलिखित है। अजीब बात यह है कि जब उपर्युक्त कोड किसी भी आईफोन 5 पर आईओएस 6.1 या 7.0.x चलाता है, तो लाइन self.date = [f dateFromString:s]; प्रत्येक बार शून्य लौटाती है।

मैंने जांच की है और स्ट्रिंग s मौजूद है और उस डिवाइस के साथ साइड-बाय-साइड की तुलना में वही वर्ण होते हैं जो दिनांक को सही तरीके से पार्स करते हैं। `2013-10-31T21:

यह एक उदाहरण दिनांक स्ट्रिंग है 50: 00-06: 00 '

मैं कुछ यहाँ याद आ रही है?

+0

मात्रा * किसी भी *। क्या यह लोकेल के साथ एक मुद्दा हो सकता है? –

+0

संभावित डुप्लिकेट [NSDateFormatter लोकेल "सुविधा" से निपटने का सबसे अच्छा तरीका क्या है?] (Http://stackoverflow.com/questions/6613110/what-is-the-best-way-to-deal-with- the-nsdateformatter-locale-feature) –

उत्तर

12

ऐसा इसलिए है क्योंकि आप डेट फॉर्मेटर के लोकेल को विशेष en_US_POSIX लोकेल में सेट नहीं कर रहे हैं। सबसे अधिक संभावना है कि आपके आईफोन 5 में 24 घंटे की सेटिंग के लिए एक अलग सेटिंग है।

जब भी आप एक निश्चित प्रारूप स्ट्रिंग को पार्स करते हैं तो आपको विशेष लोकेल सेट करने की आवश्यकता होती है।

+3

धन्यवाद। मैंने लाइन '[f setLocale: [NSLocale localeWithLocaleIdentifier: @ "en_US_POSIX"]] जोड़ा; 'और यह अब काम करता है। – user2917941

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