2016-06-09 7 views
-8

Ich versuche dieses Datum zu analysieren "18. Juni 2016. Samstag" bis "18/06/2016" Ich bin mir bewusst, dass dies mit der Regex-Methode gemacht werden kann, aber ich bin mir nicht sicher, wie Sie eine bekommen würden Ausgabe mit diesem.Wie formatiert man das Datum mit NSDateFormatter in Swift für iOS?

Verfahren NSDateFormatter in schnellen Verwendung würde

+1

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

+1

Vielleicht lesen Sie die Dokumentation. – Alexander

+0

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. –

Antwort

0

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.

+0

Da die ursprüngliche Datumszeichenfolge in einer bestimmten Sprache (Englisch) ist, müssen Sie das Gebietsschema des Datumsformatierungselements auf ein englisches Gebietsschema festlegen. – rmaddy

+0

@rmaddy du hast absolut recht. Ich habe meine Antwort aktualisiert – guidev

+0

cool +1, das ist eine gute Antwort :) – Dhiru

Verwandte Themen