2017-01-01 1 views
0

incapable de convertir la chaîne au format de la date avec AM/PMImpossible de convertir la chaîne de date "01/01/2017 13: 40: 15,314" à "dd MMMM yyy hh: mm un" format

mon exemple de code:

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS" 

if let todaysDate:Date = dateFormatter.date(from: dateString) { 

    let newdateFormatter:DateFormatter = DateFormatter() 
    newdateFormatter.dateFormat = "dd MMMM yyy hh:mm a" 
    newdateFormatter.amSymbol = "AM" 
    newdateFormatter.pmSymbol = "PM" 

    return newdateFormatter.string(from: todaysDate) 
} 
entrée

est: "2017-01-01 13:40:15.314"

sortie est: 01 January 2017 19:57

prévu eteint est: 01 January 2017 7:57 PM

+0

La configuration de votre périphérique de test/simulateur indique-t-elle l'heure dans l'application Paramètres? – rmaddy

Répondre

1

Définissez les paramètres régionaux du formateur de date sur en_US_POSIX. En tant qu'effet secondaire, les symboles AM/PM sont également mis en majuscules.

let newdateFormatter = DateFormatter() // Do not annotate types the compiler can infer 
newdateFormatter.locale = Locale(identifier: "en_US_POSIX") 
newdateFormatter.dateFormat = "dd MMMM yyyy h:mm a" 
newdateFormatter.string(from: todaysDate) 
+0

Il y a beaucoup de doublons pour cette question. – rmaddy

+0

N'hésitez pas à le marquer comme doublon @rmaddy – vadian