2015-11-02 6 views
7

में एक स्ट्रिंग यूटीसी तिथि को NSDate में कनवर्ट करने के लिए कैसे करें मुझे यूटीसी स्ट्रिंग तिथियां मिल रही हैं जो इस "2015-10-17T00: 00: 00.000Z" की तरह दिखती हैं और उन्हें इस प्रारूप में एनएसडीएटी में परिवर्तित करना चाहते हैं "अक्टूबर 12 वीं 2015 11:19:12 पूर्वाह्न "स्विफ्ट

यह वह मार्ग है जिसे मैं कोशिश कर रहा हूं लेकिन मुझे सही तिथि नहीं मिल रही है।

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = //can't seem to get this right 
dateFormatter.timeZone = NSTimeZone(name: "UTC") 
let date = dateFormatter.dateFromString("2015-10-17T00:00:00.000Z") 
+2

[एक में एक आईएसओ 8601 टाइमस्टैम्प परिवर्तित की संभावित डुप्लिकेट एनएसडीएटी: यूटीसी समय ऑफसेट से कैसे निपटता है?] (Http://stackoverflow.com/questions/5185230/converting-an-iso-8601-timestamp-into-an-nsdate-how-does-one-deal- साथ-यूटीसी) –

+0

कुछ कारणों से सूचीबद्ध कोई भी उत्तर मेरे लिए काम नहीं करता – jonv562

उत्तर

15

मुझे लगता है कि इस

let formatter = NSDateFormatter() 
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
let localDate = formatter.dateFromString(date) 
+0

यह उत्तर का हिस्सा था, लेकिन जिस तारीख को मैं वापस प्राप्त करता हूं वह सही प्रारूप में नहीं है, लेकिन अगर इस एनएसडीएटी में एक नया प्रारूप लागू होता है और इसे स्ट्रिंग में बदलता है यह formatter.dateFormat = "एमएमएमएम डी 'पर' एच: एमएम ए ' var dateString = formatter.stringFromDate (localDate!) – jonv562

+0

ठीक है हाँ मैं यह कहना भूल गया था। या आप आवश्यक प्रारूप में दिनांक पुनर्प्राप्त करने के लिए एक नया डेटाफॉर्मेटर() ऑब्जेक्ट बना सकते हैं। – ozzyzig

+0

महान जवाब, यह मेरी समस्या हल हो गई –

3

यह स्विफ्ट 3.0 और नवीनतम Xcode [अप्रैल 2017] के लिए काम करता है काम करना चाहिए

let dateString = "2017-Jan-01 12:00:00.250" 
     let dateFormatter = DateFormatter() 
     dateFormatter.dateFormat = "yyyy-M-dd HH:mm:ss.SSS" 
     dateFormatter.locale = Locale.init(identifier: "en_GB") 
     let dateObj = dateFormatter.date(from: dateString) 

     let date = dateObj 
     let formatter = DateFormatter() 
     formatter.calendar = Calendar(identifier: .iso8601) 
     formatter.locale = Locale(identifier: "en_US_POSIX") 
     formatter.timeZone = TimeZone(secondsFromGMT: 0) 
     formatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSSXXXXX" 
     let currentDateTime = formatter.string(from: date!)