Sie gehen hier bevorzugt werden.
NSDateFormatter
unterstützt keine Tage mit ordinalen Indikatoren, also müssen Sie sie loswerden. Sie können Regex verwenden:
let regex = try NSRegularExpression(pattern: "[st|nd|rd|th]", options: NSRegularExpressionOptions())
regex.replaceMatchesInString(dateString, options: NSMatchingOptions(), range: NSMakeRange(0, 4), withTemplate: "")
dann formatieren Sie einfach das Datum.
komplette Code:
let dateString = NSMutableString(string: "18th of June 2016. Saturday")
do {
let regex = try NSRegularExpression(pattern: "[st|nd|rd|th]", options: NSRegularExpressionOptions())
regex.replaceMatchesInString(dateString, options: NSMatchingOptions(), range: NSMakeRange(0, 4), withTemplate: "")
let formatter = NSDateFormatter()
formatter.locale = NSLocale(localeIdentifier: "en_US")
formatter.dateFormat = "d' of 'MMMM y'.' EEEE"
let date = formatter.dateFromString(dateString as String)
formatter.dateStyle = .ShortStyle
formatter.locale = NSLocale.currentLocale()
let output = formatter.stringFromDate(date!)
print(output)
} catch let error as NSError { print(error) }
Beachten Sie, dass NSNumberFormatter
nach formatiert den aktuellen Locale-Einstellungen.
Die Verwendung von 'NSDateFormatter' ist die richtige Lösung. Mit einem Regex ist das überhaupt nicht möglich. Aktualisieren Sie Ihre Frage mit dem, was Sie bisher versucht haben. – rmaddy
Vielleicht lesen Sie die Dokumentation. – Alexander
Apple Dokumentation für 'NSDateFormatter': https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/. Wenn Sie ein spezielles Problem mit NSDateFormatter haben, dann bearbeiten Sie Ihre Frage, um den Code und das Problem, das Sie haben, einzubeziehen. –