2012-10-01 13 views
6

मुझे NSDateFormatter के साथ कोई समस्या है। यह कुछ विशिष्ट तिथियों के लिए null लौटा रहा है।NSDateFormatter विशिष्ट तिथियों के लिए शून्य लौटाता है

मैं इस समारोह मामले डिबग करने के लिए किया था:

- (void) debugTest:(NSString *)dateStr{ 

    NSLog(@"String: %@", dateStr); 

    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    [df setDateFormat:@"yyyy-MM-dd"]; 

    NSDate *dateObj = [df dateFromString: dateStr]; 

    NSLog(@"Date: %@", dateObj); 

} 

यह कुछ दिनांकों के लिए मेरी लॉग उत्पादन होता है:

String: 2012-10-18 
Date: 2012-10-18 03:00:00 +0000 
String: 2012-10-19 
Date: 2012-10-19 03:00:00 +0000 
String: 2012-10-20 
Date: 2012-10-20 03:00:00 +0000 
String: 2012-10-21 
Date: (null) 
String: 2012-10-22 
Date: 2012-10-22 02:00:00 +0000 
String: 2012-10-23 
Date: 2012-10-23 02:00:00 +0000 

क्यों यह केवल तारीख 2012-10-21 के लिए अशक्त लौट रहा है?

मैं 2011-10-01 to 2014-11-01 से अंतराल के साथ अन्य परीक्षण किया था और निम्नलिखित तारीखों null लौटे:

2011-10-16, 2012-10-21, 2013-10-20, 2014-10-19 

इस बग के कुछ प्रकार है? मैं कुछ गलत कर रहा हूँ?

मैं अपने तारीख फ़ॉर्मेटर [df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; और [df setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; को जोड़ा गया:

+0

संबंधित? http://stackoverflow.com/a/4265130/343955 – adarshr

+0

मैंने दूसरे प्रश्न के समाधान की कोशिश की लेकिन मेरे लिए काम नहीं किया। मुझे लगता है कि समस्या अलग है। – Rafael

+0

कोड ठीक काम करता है। यह सूची के बाहर कुछ है। मुझे उम्मीद है कि स्ट्रिंग गुंजाइश से बाहर हो गई है। कृपया शेष परीक्षण कोड पोस्ट करें। – madmik3

उत्तर

4

मैं अपने ही सवाल बस किसी के मामले में रजिस्टर करने के लिए एक ही समस्या मिल का जवाब देंगे।

तो, अपने नए कोड है:

- (void) debugTest:(NSString *)dateStr{ 

    NSLog(@"String: %@", dateStr); 

    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    [df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; 
    [df setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 
    [df setDateFormat:@"yyyy-MM-dd"]; 

    NSDate *dateObj = [df dateFromString: dateStr]; 

    NSLog(@"Date: %@", dateObj); 

} 

मुझे लगता है कि समस्या डिवाइस के विन्यास से संबंधित था, की स्थापना दो गुण समस्या तय।

+0

यह मेरे लिए काम नहीं किया। मुझे अभी भी आंशिक परिणाम मिल रहे हैं। कुछ शून्य मान और कुछ दिनांक स्ट्रिंग। आप इसे कैसे काम करने में सक्षम थे? – AJ112

+0

मैंने वही किया जो मैंने पोस्ट किया और मेरे लिए काम किया। लेकिन मैंने इसे बहुत समय पहले किया था, इसलिए मुझे नहीं पता कि हाल के आईओएस संस्करणों में यह अभी भी काम करता है, शायद कुछ बदल गया है। – Rafael

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