2017-11-24 3 views
-5

Ich möchte mein Datum von "25-12-1994" in "25-Dec-1994" umwandeln. Aber während debuggen das Ergebnis kommen wie dieseDatum Stringkonvertierung falscher Monat

enter image description here

Im Folgenden sind mein Code:

let dateStr = "25-12-1994" 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "dd-mm-yyyy" 
let date = dateFormatter.date(from:dateStr) 
dateFormatter.dateFormat = "dd-MMM-yyyy" 
let actualDate = dateFormatter.string(from: date!) 
+3

'TT-MM-JJJJ' vs' TT-MM-JJJJ'. "mm" gegen "MM". Überprüfen Sie das Dokument: http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns, um den Unterschied zu kennen. – Larme

+0

@Larme Ich möchte es anzeigen MMM nicht MM –

+2

Sie müssen verstehen: 'M' (Großbuchstaben) ist für den Monat. 'm' (Kleinbuchstaben) ist für Minuten. Die Anzahl der Vorkommnisse/Wiederholungen bestimmt, was angezeigt werden soll (alle Buchstaben, Zahlen, Zahlen mit führenden Nullen usw.), aber die Daten als Monate oder Minuten interpretieren. Aber in Ihrem ersten Formatierer setzen Sie den Monat als Minuten ab. Also schreibe ich Januar (standardmäßig auf 1 gesetzt). Für den ersten Formatierer müssen Sie "dd-MM-yyyy", nicht "dd-mm-yyyy" schreiben. – Larme

Antwort

0

Wie Sie benötigen bitte unten Methode verwenden. Es gibt Ihnen einen geeigneten Monat formatiert Datum

func monthFormatechange(_ dateString : String) -> String 
{ 

    let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "dd-MM-yyyy" 
    let date = dateFormatter.date(from:dateString) 
    dateFormatter.dateFormat = "dd-MMM-yyyy" 
    let actualDate = dateFormatter.string(from: date!) 
    return actualDate 
}