comment puis-je retourner un NSDate dans un fuseau horaire prédéfini à partir d'une chaîne
let responseString = "2015-8-17 GMT+05:30"
var dFormatter = NSDateFormatter()
dFormatter.dateFormat = "yyyy-M-dd ZZZZ"
var serverTime = dFormatter.dateFromString(responseString)
println("NSDate : \(serverTime!)")
le code ci-dessus renvoie l'heure comme
2015-08-16 18:30:00 +0000
comment puis-je retourner un NSDate dans un fuseau horaire prédéfini?
Tu ne peux pas.
Une instance de NSDate
ne contient aucune information sur le fuseau horaire ou le calendrier. Il identifie simplement un point dans le temps universel.
Vous pouvez interpréter cet objet NSDate
dans le calendrier de votre choix. L'interpolation de chaîne de Swift (la dernière ligne de votre exemple de code) utilise un NSDateFormatter
qui utilise UTC (c'est le "+0000" dans la sortie).
Si vous voulez que la valeur de NSDate
sous forme de chaîne dans le calendrier de l'utilisateur actuel, vous devez explicitement configurer un formateur de date pour cela.
Le format de date doit être attribué à la propriété dateFormat du formateur de date à la place.
let date = NSDate.date()
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let str = dateFormatter.stringFromDate(date)
println(str)
Cela imprime la date en utilisant le fuseau horaire par défaut sur l'appareil. Seulement si vous voulez la sortie selon un fuseau horaire différent, vous ajouterez par exemple
Swift 3. *
dateFormatter.timeZone = NSTimeZone(name: "UTC")
Swift 4. *
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
référez-vous également au lien http://www.brianjcoleman.com/tutorial-nsdate-in-Swift/
Swift 4.0
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")