let dateString = "2017-10-08T00:12:00.000Z"
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: .iso8601)
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX"
let date = formatter.date(from: dateString)!
let components = Calendar.current.dateComponents(in: TimeZone(identifier: "America/New_York")!, from: date)
print("Day - \(components.day!)")
print("Month - \(components.month!)")
print("Year - \(components.year!)")
print("Hour - \(components.hour!)")
print("Min - \(components.minute!)")
print("Second - \(components.second!)")
print("Final Date - \(components.date!)")
En exécutant le code ci-dessus je suis la sortiemauvaise date est Affichage de DateComponets
jour - 7
Mois - 10
Année - 2017
Heure - 20
min - 12
Deuxième - 0
Date finale - 2017-10-08 00:12:00 +0000
Mais ma date prévue devrait être
Date de finale - 2017-10-07 20:12:00 +0000
Votre date est correcte. Pourquoi pensez-vous que la date finale devrait être différente de la chaîne de date d'origine? –
Une date c'est juste un moment dans le temps. Il n'a pas de fuseau horaire. –
les composants reflètent la date originale. Vous devriez aussi imprimer le composant de fuseau horaire –