La conversion de date entre les fuseaux horaires swift
J'ai une date stockée sur mon serveur en ligne de la base de données qui est en GMT
. Je récupère la date et le convertir en le fuseau horaire de l'utilisateur en utilisant le code suivant :
if let messagedate = oneitem["timestamp"] as? String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let date = dateFormatter.dateFromString(messagedate)
let source_timezone = NSTimeZone(abbreviation: "GMT")
let local_timezone = NSTimeZone.systemTimeZone()
let source_EDT_offset = source_timezone?.secondsFromGMTForDate(date!)
let destination_EDT_offset = local_timezone.secondsFromGMTForDate(date!)
let time_interval : NSTimeInterval = Double(destination_EDT_offset - source_EDT_offset!)
let final_date = NSDate(timeInterval: time_interval, sinceDate: date!)
curr_item.date = final_date
}
Maintenant, j'ai besoin de convertir la date de retour à GMT
afin de le communiquer au serveur, mais je ne suis pas sûr de savoir comment le reconvertir en GMT
.
OriginalL'auteur Alk | 2016-07-28
Vous devez vous connecter pour publier un commentaire.
Ne pourriez-vous utiliser vos données de formatage de nouveau avec un autre fuseau horaire et de la convertir? Comme
OriginalL'auteur Amloelxer
environ 50 fois plus efficace
Passer GMT+10, ça va marcher... Maintenant, essayez GMT+8, ça va crash sorta comme tous les autres GMT, fuseau horaire...Donc oui, c'est très efficace
OriginalL'auteur quemeful
Version plus simple:
OriginalL'auteur mukaissi
Depuis
NSDate
est toujours en GMT/UTC le fuseau horaire ne devient pertinente lors de l'affichage, ou de l'obtention par l'utilisateur. Il suffit de toujours supposer qu'il est UTC en interne, de le convertir en pour l'utilisateur (par la mise sur leNSDateFormatter
) que nécessaire, et vous n'avez plus à vous soucier du problème.(x.date)
, j'ai besoin de convertir la date fixée ci-dessus à l'heure GMT, sinon la date dans le fuseau horaire de l'utilisateur est transmis au serveur et la totalité de la requête n'a pas de sens.C'est le genre de mon point de vue. La seule fois fuseau horaire questions à l'utilisateur. Obtenez de l'utilisateur et de le modifier immédiatement, à l'heure GMT, il est donc toujours dans une cohérence interne format partout où il est utilisé.
OriginalL'auteur David Berry
Basé sur mukaissi réponse, mais de l'ordre de la franchise dans l'expression a été corrigé.
OriginalL'auteur Nikaaner
Je suggère
dateFormatter
pour revenir directement un NSDate en UTC (ayant NSDates en UTC est une bonne pratique)dateFormatter
de nouveau pour générer une chaîne de caractèresOriginalL'auteur PierreMB