2017-03-01 3 views
0

Je viens de commencer à utiliser la méthode du calendrier Swift 3.0 startOfDay. Cela fonctionne très bien pour la plupart, mais parfois il a été de retour un temps de 3 heures du matin dans la date de retour. Je reçois un productionDate d'un service web, que je suis en train de convertir d'une chaîne de style Unix en utilisant la méthode suivanteSwift 3.0 - La méthode startOfDay du calendrier retourne 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) 
} 

Exemple date/heure chaîne

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

Je puis en enregistrant une valeur entière (timeIntervalSince1970) à Firebase, où je peux voir la date incorrecte à 3h du matin. Voici un extrait de code que je utilise pour générer la valeur Int je gardais à Firebase

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

Comme je l'ai dit, la plupart du temps, le temps finit par être minuit la date correcte, mais lorsque l'application est En consultant le service Web en arrière-plan, je vois de temps en temps 3am pop dans la base de données Firebase. Je sais que je n'ai pas donné beaucoup d'informations ici. J'espère vraiment que quelqu'un a eu le même problème et a trouvé un moyen de le réparer ou quelqu'un peut regarder mon code et me dire comment je suis un bonehead.

Merci!

+0

Vous mélangez probablement l'heure UTC avec votre fuseau horaire actuel. –

+0

@Robert Je reçois une valeur de chaîne de fuseau horaire comme 'America/New_York' dans la charge utile du service Web, donc je vais l'utiliser pour initialiser le DateFormatter. Merci! – Moebius

+0

Pourquoi essayez-vous d'obtenir le startOfDay? Mieux vaut utiliser midi (12h) si vous avez besoin d'une date pour les calculs calendaires. Tous les jours a 12h mais pas tous les jours à 12h. –

Répondre

-3

J'ai enfin réussi à reproduire ce problème et cela n'a rien à voir avec startOfDay retournant un temps de 3h du matin. Je poste une autre question pour essayer de trouver la réponse au vrai problème.

+0

comment est mince une réponse -.- –