2015-11-08 1 views
0

Je souhaite envoyer une date/heure (pour un calendrier d'événements) en utilisant JSON à un serveur. Une fois sur le serveur, je voudrais que ce soit dans l'heure locale de l'expéditeur.IOS/Objective-C: Envoyer la date au serveur à l'aide de JSON

Étant donné que JSONSerialization ne prend pas en charge l'objet date, j'envoie un horodatage Unix. Le problème est une fois dans ce formulaire, les informations sur le fuseau horaire de l'utilisateur semblent être perdues.

Y at-il un moyen d'ajuster l'horodatage unix pour refléter le fuseau horaire de l'utilisateur. Ou quelqu'un peut-il suggérer un meilleur moyen pour NSJsonserialiser une date?

code

ci-dessous produit un horodatage unix mais je veux l'enregistrer sur le serveur comme quelque chose comme 2015-10-26 18:49:37

NSDate *date = self.datePicker.date; 
CFTimeInterval startDate = [date timeIntervalSince1970] * 1000; 
NSString *dateStarted = [NSString stringWithFormat:@"/Date(%.0f+0800)/", startDate]; 
+0

Avant sérialisation l'horodatage, ajouter ou soustraire le décalage de l'heure locale à UTC (non GMT). – Avi

Répondre

0

Je regarde en utilisant la syntaxe complète ISO 8601 avec le décalage horaire inclus à partir d'un horodatage UTC.

2015-11-04T09:20:22+00:00

Obtenir une date ISO-8601 et l'horodatage d'un NSDate est tout droit vers l'avant, mais vous voudrez peut-être regarder une bibliothèque pour obtenir des conseils, si cela est nouveau pour vous.

https://github.com/clearbrian/NSDateFormatter_ISO_8601

+0

Avez-vous besoin de télécharger cette bibliothèque pour faire la conversion? –

+0

@ user12345 Si vous jetez un coup d'oeil, en particulier, à [github.com/clearbrian/NSDateFormatter_ISO_8601/blob/master/NSDateFormatter_ISO_8601/NSDateFormatter_ISO_8601/CATEGORY_NSString%2BNSDateFormatter_ISO_8601/NSString%2BNSDateFormatter_ISO_8601.m](https://github.com/clearbrian/ NSDateFormatter_ISO_8601/blob/master/NSDateFormatter_ISO_8601/NSDateFormatter_ISO_8601/CATEGORY_NSString% 2BNSDateFormatter_ISO_8601/NSString% 2BNSDateFormatter_ISO_8601.m), vous devez disposer de la partie clé dont vous avez besoin pour la fin du client. Côté serveur, vous devrez le décoder, évidemment, à partir d'une chaîne dans un objet date. – Michael