2017-03-01 3 views
0

zurück Ich habe gerade angefangen, die Swift 3.0 Kalendermethode startOfDay zu verwenden. Es funktioniert in den meisten Fällen gut, aber manchmal hat es eine Zeit von 3 Uhr morgens im zurückgegebenen Datum zurückgegeben. Ich bin ein productionDate von einem Web-Service bekommen, die ich von einem Unix-Stil-String bin Umwandlung mit dem folgende VerfahrenSwift 3.0 - Kalender startOfDay Methode gibt 3am

static let dateFormatString = "yyyy-MM-dd'T'HH:mm:ssZZZZZ" 

static func dateForDateString(dateString: String) -> Date? 
{ 
    let formatter = DateFormatter() 
    formatter.dateFormat = dateFormatString 

    return formatter.date(from: dateString) 
} 

Beispiel Datum/Zeit-String

2017-03-01T09:38:05-05:00 

ich dann einen Integer-Wert speicherte (timeIntervalSince1970) zu Firebase, wo ich das falsche Datum als 3am sehen kann. Hier ist ein Ausschnitt von Code, den ich den Int-Wert zu erzeugen verwende ich

let startofDay = Calendar.current.startOfDay(for: productionDate) 
let dateValue = Int(startofDay.timeIntervalSince1970) 

zu Feuerbasis speicherte Wie ich schon sagte, die meiste Zeit, endet vorerst Mitternacht des richtigen Zeitpunkt, aber wenn die App Wenn ich im Hintergrund vom Webservice abrufe, sehe ich gelegentlich 3 Uhr in der Firebase-Datenbank.

Ich weiß, dass ich hier eine Menge Informationen nicht gegeben habe. Ich hoffe wirklich, dass jemand das gleiche Problem hat und einen Weg gefunden hat, es zu reparieren, oder jemand kann meinen Code ansehen und mir sagen, wie ich ein Dummkopf bin.

Danke!

+0

Wahrscheinlich mischen Sie UTC mit Ihrer aktuellen Zeitzone. –

+0

@Robert Ich bekomme einen Zeitzonen-String-Wert wie 'America/New_York' in der Web-Service-Payload, also werde ich dies verwenden, um den DateFormatter zu initialisieren. Vielen Dank! – Moebius

+0

Warum versuchen Sie den startOfDay zu bekommen? Besser, mittags (12 Uhr) zu verwenden, wenn Sie ein Datum für kalendarische Berechnungen benötigen. Jeden Tag hat 12 Uhr, aber nicht jeden Tag hat 12 Uhr. –

Antwort

-3

Ich war endlich in der Lage, dieses Problem zu reproduzieren und es hat nichts damit zu tun, dass startOfDay um 3 Uhr morgens zurückkehrt. Ich schreibe eine weitere Frage, um die Antwort auf das eigentliche Problem herauszufinden.

+0

wie ist dünn eine Antwort -.- –