2016-07-21 5 views
2

Wir haben eine iOS-App in Produktion und wir verwenden ein benutzerdefiniertes Format für unsere datumsinterne Darstellung.NSDateFormatter mit Formatzeichenfolge gibt Zeit mit kurzem Stil aus

ich ein globales Datum Formatierer wie folgt gespeichert:

static var InternalDateFormatter: NSDateFormatter = { 
    let dateFormatter: NSDateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "yyyyMMdd HH':'mm" 
    return dateFormatter 
}() 

Mit einer NSDate Instanz von 2016-07-21T16:46:51+0000 die erwartete Ausgabe 20160721 16:46 ist, aber in 2 Telefone der Ausgang 20160712 4:41 p.m..

Das Gerät ist ein iPhone 5 mit iOS 9.3.
Ich habe versucht, in einem Gerät, demselben Modell und derselben iOS-Version zu installieren, und die Ausgabe war richtig.

Kann mir jemand einen Einblick geben, was dort passiert?

+0

das ist seltsam. Haben Sie versucht, die abgeleiteten Daten zu löschen und das Projekt auf dem betroffenen Gerät neu zu erstellen? – markedwardmurray

Antwort

2

Sie sollten timezone und locale zu Ihrem Datum Formatter gesetzt, versuchen Sie es wie folgt aus:

static var InternalDateFormatter: NSDateFormatter = { 
    let dateFormatter: NSDateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "yyyyMMdd HH':'mm" 
    dateFormatter.timeZone = NSTimeZone.localTimeZone() 
    dateFormatter.locale  = NSLocale(localeIdentifier: "en_US_POSIX") 
    return dateFormatter 
}() 

Mit en_US_POSIX ID locale werden Sie immer am-pm US-Zeit-Standard geben.
Aber Sie können jede Gebietsschema-ID wählen - https://gist.github.com/jacobbubu/1836273

+0

Die timeZone-Eigenschaft von NSDateFormatter ist standardmäßig die Zeitzone des Systems – markedwardmurray

Verwandte Themen