बधाई के लिए आदर्श समाधान है कि क्या संबंधित है, आप और अधिक समय क्षेत्र विषमताएं पाया गया है! आप सही हैं कि अपना समय क्षेत्र बदलना इस मुद्दे को ठीक करेगा। आइए स्पेलंकिंग करें और देखें कि क्या हम समझ सकते हैं कि क्यों!
सबसे पहले, हम कोशिश करेंगे और जहां इस weirdness होता है हर समय क्षेत्र लगता है:
NSArray *tzs = [NSTimeZone knownTimeZoneNames];
NSDateFormatter *f = [[NSDateFormatter alloc] init];
f.dateFormat = @"MMyyyy";
for (NSString *name in tzs) {
f.timeZone = [NSTimeZone timeZoneWithName:name];
NSDate *date = [f dateFromString:@"062008"];
if (date == nil) {
NSLog(@"%@", name);
}
}
यह सभी ज्ञात समय-क्षेत्रों के माध्यम से लूप करने जा रहा है और "062,008" पार्स करने के लिए उस समय क्षेत्र में प्रयास करें। हम इस चलाते हैं, तो हम पाते हैं कि यह लॉग:
Africa/Casablanca
Asia/Karachi
तो मेरा अनुमान है कि कि आप या तो कैसाब्लांका या कराची में रहते हैं (क्योंकि डिफ़ॉल्ट रूप से आपका NSDateFormatter
साथ अपने समय क्षेत्र, आरंभ नहीं हो जाता यही वजह है कि आप है 'इस समस्या को देख रहे हैं; शायद कैसाब्लांका, यह देखते हुए कि आप जीएमटी से 1 घंटे आगे दिखाई देते हैं)।
देखते हैं कि हम पता लगा सकते हैं कि उन समय क्षेत्रों के साथ अजीब है देखते हैं:
$ zdump -v Africa/Casablanca
... snip ...
Africa/Casablanca Sun Jun 1 00:00:00 2008 UTC = Sun Jun 1 01:00:00 2008 WEST isdst=1
... snip ...
$ zdump -v Asia/Karachi
... snip ...
Asia/Karachi Sat May 31 19:00:00 2008 UTC = Sun Jun 1 01:00:00 2008 PKST isdst=1
... snip ...
पर्याप्त बेशक, ऐसा लगता है कि दोनों कैसाब्लांका और कराची 2008 में 1 जून को आधी रात को छोड़ दिया इस प्रकार, आप अनिवार्य रूप से कर रहे हैं इसे एक अयोग्य सक्षम तिथि दे रहा है, और यह nil
लौटा रहा है। संक्षेप में।
इस मामले में, सही जवाब है अपना समय क्षेत्र बदलने के लिए (जीएमटी शायद एक महान पसंद है), क्योंकि संभावना है कि इस स्ट्रिंग आप को पार्स कर रहे हैं उपयोगकर्ता इनपुट से नहीं आ रही है (इसकी अजीब प्रारूप दिया), और इस प्रकार एक मानक टाइमज़ोन के अनुसार पार्स किया जाना चाहिए। और हालांकि मुझे यकीन है कि कैसाब्लांका और कराची वास्तव में साफ-सुथरे स्थान हैं, उनके टाइमज़ोन बिल्कुल आम नहीं हैं ...
टी एल; डॉ:
डेलाइट सेविंग टाइम समाप्त कर दिया जाना चाहिए।
अपना खुद का उत्तर लिखें और इसका उत्तर दें - यह आपको अंक प्राप्त करेगा और इसे अनुपालन करने वाले अन्य लोगों के लिए स्पष्ट बनाता है। –
और आपके उत्तर में, आप अधिक विस्तार से समझा सकते हैं: यह समय क्षेत्र से कैसे संबंधित है? ठीक है, जीएमटी को समय क्षेत्र बदलना "तय" है, लेकिन क्या यह वास्तव में * इसे ठीक करता है? क्या समस्या थी? यदि यह वास्तव में एक फिक्स है और न केवल एक पट्टी है, तो यह समस्या को कैसे हल करता है? –
वैसे: किस समय क्षेत्र * आप * में हैं? जब मैं उस कोड को चलाता हूं, और स्पष्ट रूप से जब शब्बीर (उत्तर से) इसे चलाता है, तो हम दोनों को @ @ "062008" 'की तारीख मिलती है। आप नहीं करते हैं, तो समय क्षेत्र और कैलेंडर आपका फॉर्मेटर क्या उपयोग कर रहा है? यदि आपने इसे डिफ़ॉल्ट पर छोड़ा है, तो आपका सिस्टम किस समय क्षेत्र और कैलेंडर पर सेट है? –