2017-06-29 2 views
1

Ich bin mir nicht sicher warum, aber DateFormatter scheint '-' zu entfernen, wenn Sie localizedDateFormats verwenden und es durch ein Komma ersetzen.setLocalizedDateFormatFromTemplate entfernt -

Es scheint nicht ein Teil des Unicode-Standards zu sein, das - -Feld zu entfernen und es in ein Komma umzuwandeln. Ich habe auch versucht, das - mit '' zu umgeben. Ich versuche setLocalizedDateFormatFromTemplate zu verwenden, um die Lokalisierung zu handhaben, so kann ich nur Gebrauch .dateFormat nicht verwenden (was es nicht lösen)

let dateHyphenFormatter = DateFormatter() 
dateHyphenFormatter.setLocalizedDateFormatFromTemplate("LLL d YYYY ‐ j:mm a") 
print(dateHyphenFormatter.string(from: Date())) // Jun 29, 2017, 1:57 PM 

Antwort

0

setLocalizedDateFormatFromTemplate sollte nur mit einem Satz von Formatbezeich verwendet werden. Das zurückgegebene Format gibt an, wie diese Felder in der angegebenen Ländereinstellung angezeigt werden sollen. So wird die Reihenfolge der Felder und eventuelle Interpunktion für Sie bestimmt. Die Reihenfolge der Bezeichner und alle Interpunktionszeichen, die Sie in die Vorlage eingeben, werden ignoriert. In einigen Fällen werden die tatsächlichen Formatbezeichner geändert, um den Standards des Gebietsschemas besser zu entsprechen.

Sie werden das gleiche Format mit den folgenden Vorlagen erhalten:

LLLdyyyyjmma 
yyyyLLLdjmma 

und andere Reihenfolge dieser Planern und einer anderen (ignoriert) Interpunktion Sie dort setzen.

FYI - nicht YYYY verwenden. Sie möchten yyyy.

Hier einige Test-Code, der zeigt, wie jede locale Ihre Vorlage verwendet:

for localeId in Locale.availableIdentifiers.sorted() { 
    let locale = Locale(identifier: localeId) 
    if let format = DateFormatter.dateFormat(fromTemplate: "yyyyLLLdjmma", options: 0, locale: locale) { 
     print("\(localeId) - \(format)") 
    } 
} 

Beachten Sie, dass dieser Code aus irgendeinem Grund mit Xcode 9 Beta 2 so sicher sein, zu prüfen, dies mit Xcode 8.

stürzt