2017-02-19 1 views
1

Ich benutze Firebase als Backend und speichert eine Zeichenfolge von Zeit wie diese 7:00 PM.Konvertieren Zeit Zeichenfolge in Datum swift

Ich versuche, die Zeichenfolge von Firebase erhalten zu konvertieren und es in NSDate zu konvertieren, damit ich es sortieren, die time..etc ändern

ich online geschaut haben und kommen mit diesem Code bisher

dateFormatter.dateFormat = "hh:mm a" 
        dateFormatter.locale = NSLocale.current 
        dateFormatter.timeZone = NSTimeZone.local 
        let date = dateFormatter.date(from: item) 
        self.times.append(date!) 
        print("Start: \(date)") 

wo Artikel ist die Zeichenfolge (07.00)

Wenn betreibe ich die App, die Konsole kehrt:

Artikel: 9.00

Start: Optional (2000-01-01 05:00:00 +0000)

Ive gesetzt Zeitzone, locale, Format. Warum ist die zurückgegebene Zeit nicht korrekt?

Einige weitere Beispiele ausgedruckt:

Artikel: 13.20

Start: Optional (2000-01-01 17:20:00 +0000)

Item: 09.40

Start: Optional (2000-01-01 05:40:00 +0000)

Artikel: 10.00

Starten Sie

: Optional (2000-01-01 05:00:00 +0000)

Artikel: 12:00 PM

Start: Optional (2000-01-01 17.00.00 +0000

)
+0

Für einen Start, das Format für 12 Stunden am/pm Zeit ist „hh“, nicht „HH“ –

+0

, die tatsächlich ein Fehler war, ich habe es hat als hh: mm a (Bearbeitet den Beitrag) – huddie96

+0

Was ist deine Zeitzone? –

Antwort

2

Immer daran denken: Date/NSDate speichert Zeiten in UTC. Wenn Ihre Zeitzone anders als UTC ist, wird der von print(date) zurückgegebene Wert immer unterschiedlich sein.

Sie können die in Firebase gespeicherte Stunde durch Angabe einer UTC-Zeitzone ausdrucken. Der Standardwert ist der Benutzer (dh Ihre) Zeitzone:

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "hh:mm a" 
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0) 

let item = "7:00 PM" 
let date = dateFormatter.date(from: item) 
print("Start: \(date)") // Start: Optional(2000-01-01 19:00:00 +0000) 
Verwandte Themen