आपकी प्रारूप स्ट्रिंग करीब है, लेकिन आप SSS
. के साथ मिलीसेकंड निर्दिष्ट करना चाहते हैं , भी:
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSX"];
साथ ही, Z
आपकी तिथि स्ट्रिंग में "ज़ुलु" (यानी GMT/UTC) है, इसलिए आपका dateFormat
Z
. का उपयोग करना चाहिए या X
उद्धरणों के बिना ताकि यह स्ट्रिंग के समय क्षेत्र को सही ढंग से पार कर सके। इसके अलावा, यदि आप तिथियों से तार बना रहे हैं, तो अपने समय क्षेत्र को तदनुसार निर्धारित करना सुनिश्चित करें। आप अपना लोकेल भी सेट करना चाहते हैं:
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.locale = enUSPOSIXLocale;
formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSX";
formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
देखें तकनीकी Q&A QA1480 अधिक जानकारी के लिए।
आप नए NSISO8601DateFormatter
. का भी उपयोग कर सकते हैं , जो आपको उनमें से कुछ मातम से बाहर निकालता है:
NSISO8601DateFormatter *formatter = [[NSISO8601DateFormatter alloc] init];
formatter.formatOptions = NSISO8601DateFormatWithFullDate | NSISO8601DateFormatWithFullTime | NSISO8601DateFormatWithFractionalSeconds;