2015-10-15 5 views
9

का उपयोग नहीं यह मेरा कोड है:स्विफ्ट NSDateFormatter सही स्थान और प्रारूप

let currentDate = NSDate() 
let usDateFormat = NSDateFormatter() 
usDateFormat.dateFormat = NSDateFormatter.dateFormatFromTemplate("d MMMM y", options: 0, locale: NSLocale(localeIdentifier: "en-US")) 
cmt.date = usDateFormat.stringFromDate(currentDate) 

मैं पाने के लिए "15 अक्टूबर 2015" उम्मीद कर रहा था, लेकिन मुझे मिल गया "अक्टूबर 15, 2015"। महीने स्वीडिश लोकेल में है।

मैंने क्या गलत किया है? लोकेल और प्रारूप दोनों गलत हैं।

+0

मैं एक ही कोड की कोशिश की और मैं हूँ इस आउटपुट को प्राप्त करना 15 अक्टूबर, 2015 –

उत्तर

12

dateFormatFromTemplate के documentation देखें। यह कहा गया है कि:

वापसी मूल्य

एक स्थानीय दिनांक स्वरूप स्ट्रिंग तारीख प्रारूप टेम्पलेट में दिए गए घटकों का प्रतिनिधित्व करने, स्थान स्थान द्वारा निर्दिष्ट के लिए उचित व्यवस्था की।

लौटाई गई स्ट्रिंग में टेम्पलेट में दिए गए बिल्कुल घटकों को शामिल नहीं किया जा सकता है, लेकिन उदाहरण के लिए- लोकेल-विशिष्ट समायोजन लागू हो सकते हैं।

तो व्यवस्था और भाषा के बारे में समस्या है। तारीख आप देख रहे हैं प्राप्त करने के लिए आप तारीख फ़ॉर्मेटर के dateFormat और locale पालन निर्धारित करने की आवश्यकता के लिए:

let currentDate = NSDate() 
let usDateFormat = NSDateFormatter() 
usDateFormat.dateFormat = "d MMMM y" 
usDateFormat.locale = NSLocale(localeIdentifier: "en_US") 
cmt.date = usDateFormat.stringFromDate(currentDate) 
+0

शायद एक टाइपो :-)। LocaleIdentifier एक अंडरस्कोर, "en_US" के साथ है। – kometen

13

इस प्रयास करें:

let dateString = "2015-10-15" 
let formater = NSDateFormatter() 
formater.dateFormat = "yyyy-MM-dd" 
print(dateString) 

formater.locale = NSLocale(localeIdentifier: "en_US_POSIX") 
let date = formater.dateFromString(dateString) 
print(date) 

स्विफ्ट 3 Xcode 8

let dateString = "2015-10-15" 
let formater = DateFormatter() 
formater.dateFormat = "yyyy-MM-dd" 
print(dateString) 

formater.locale = Locale(identifier: "en_US_POSIX") 
let date = formater.date(from: dateString) 
print(date!) 

मुझे उम्मीद है यह मदद करेगा।

+0

स्थानीय en_US_POSIX बनाम एन-यूएस करने के बीच क्या अंतर है ?? ऐसा लगता है कि उपरोक्त उत्तर यह एक और तरीका कर रहा है – Thomas

2

इस कोड की कोशिश

let locale1:Locale = NSLocale(localeIdentifier: "en_US") as Locale 
var date = Date().description(with: locale1) 
print(date) 

// सोमवार, अप्रैल 3, 2017 ...

3

बेहतर स्विफ्ट 3/3.1 समाधान:

let dateFormatter = DateFormatter() 
dateFormatter.locale = Locale(identifier: "en_US") 
संबंधित मुद्दे