Timestamp très bizarre

CeetixCeetix Membre

Hello tout le monde


Voilà  j'ai un souci avec des timestamp vraiment bizarre ...
J'ai un site web où l'user peut programmer des events (choisir la date, jour, mois, année, heure et minute). Je fous le tout dans ma BDD et ensuite sur le site j'affiche tous les events et leur date.
La date correspond très bien à  ce que l'user à  enregistré.


Ce timestamp je l'utilise dans mon app iPhone mais là  chose bizarre la date est différente (genre 1 jour d'avance). Donc je vais dans ma BDD et je copie un timestamp pour le convertir sur le site http://www.timestamp.fr .
Et là  bah il me mets la même date que sur mon app iPhone, c'est à  dire la mauvaise.


J'avoue ne pas comprendre du tout ce qui se passe. Le timestamp ne dépendant pas du tout de l'heure du serveur (je suis hébergé au états-unis).


Quelqu'un aurait une idée ?  ??? 

Réponses

  • CeetixCeetix Membre
    10:17 modifié #2
    Bon bon je me suis trompé ca dépend bien du serveur je suis c**. Par contre je vois pas comment faire pour que la date affichée sur mon site concorde avec la date affichée sur iPhone
  • muqaddarmuqaddar Administrateur
    10:17 modifié #3
    Gère tes timestamps avec UTC (GMT) sur le serveur et idem sur l'iPhone.

  • CeetixCeetix Membre
    10:17 modifié #4
    Tu fais comment ? C'est un timezone ?
  • CéroceCéroce Membre, Modérateur
    10:17 modifié #5
    T'as mal dormi cette nuit, dis-moi ?  :P

    Les dates générées par le serveur ont la forme:
    2001-03-24 10:45:32 +0600
    +0600 indique le décalage horaire par rapport au méridien de Greenwich.

    Ensuite, +[NSDate dateWithString:].
  • muqaddarmuqaddar Administrateur
    10:17 modifié #6
    Voilà  une catégorie qui génère une string au format SQL à  l'heure UTC :

    - (NSString*)stringRepresentationForSqlInGMT<br />{<br />	NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];<br />	[formatter setDateFormat:@&quot;yyyy-MM-dd HH:mm:ss&quot;];<br />	[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];<br />	return [formatter stringFromDate:self];<br />}
    
  • CeetixCeetix Membre
    10:17 modifié #7
    Merci Alex.
    Ca veut dire que si je fais pareil sur mon serveur, où que mon iphone soit l'user verra toujours la même date ?
  • muqaddarmuqaddar Administrateur
    10:17 modifié #8
    J'en sais rien, je ne connais pas trop ta problématique.  :P

    Pour ma synchro en tout cas, c'est ce que j'ai fait :
    - générer les dates de modifications au format GMT sur l'iPhone
    - mettre mon serveur en heure GMT
  • AliGatorAliGator Membre, Modérateur
    10:17 modifié #9
    Une bonne date doit toujours prendre en compte le TimeStamp.

    15h00 +0000 et 13h00 +0200 c'est exactement la même heure, c'est le même moment sur terre, juste à  deux endroits géographiques différents, dans deux fuseaux horaires différents.

    Si tu n'affiches que l'heure sans la TimeZone, et donc que ton site affiche "15h00" ou "13h00" forcément tu vas avoir l'impression d'avoir des heures différentes. Donc deux solutions :
    1) Soit tu affiches aussi la Timezone sur ton site et ton app iPhone, pour que l'utilisateur comprenne que ton "15h00" c'est "Heure de Greenwich" et que le "13h00" c'est heure du fuseau horaire GMT-2 (et donc que c'est la même heure)
    2) Soit tu affiches toutes tes heures réévaluées/exprimées en UTC/GMT, c'est à  dire ramenées à  l'heure de Greenwich, pour qu'elles soient toutes exprimées dans le même fuseau horaire, sur le site et sur l'iPhone.
Connectez-vous ou Inscrivez-vous pour répondre.