2010-02-13 4 views
0

Je ne peux pas expliquer cela. Je donne les résultats suivants:Comportement bizarre calcul de la différence de fuseau horaire

 $time += $res['timezone']; (The array equates to -5*3600 (EST)) 
    return gmstrftime('%c',$time); 

Quand j'echo $ res [ 'fuseau horaire'], je reçois "-5 * 3600" qui est correct. Quand je mets la valeur de tableau devant la variable de temps, j'obtiens l'heure incorrecte. Si je commente la valeur du tableau et la remplace par -5 * 3600, j'obtiens le résultat correct. Pourquoi??

+1

Quel résultat obtenez-vous avec la variable de tableau là? Juste dire que c'est faux ne signifie pas grand chose si nous ne savons pas ce qui est réellement là, pouvez-vous donner un exemple? – animuson

+0

Pouvez-vous ajouter à quelle heure vous obtenez? Il serait également utile si vous avez répercuté l'horodatage de l'époque que vous obtenez des deux méthodes. – Anthony

+0

Merci pour vos deux ot commentaires. Je pense que je dois juste calculer les maths pour les différents fuseaux horaires et stocker ce résultat à la place. – Jim

Répondre

1

car la chaîne "-5 * 3600" et l'expression -5 * 3600 ne sont pas la même chose. Vous pouvez essayer de mettre eval autour de la valeur du tableau, comme suit:

$time += eval($res['timezone']); //(The array equates to -5*3600 (EST)) 
return gmstrftime('%c',$time); 

Notez que ceci est une très mauvaise idée, car il est à la fois lent et peu sûr. Si vous voulez stocker -5 * 3600 dans le tableau, alors calculez la valeur et stockez le résultat dans le tableau:

$res['timezone'] = -5*3600; 
+0

Battez-moi aussi! (Juste pour les coups de pied, faire un var_dump sur sa valeur regarder @ les résultats.) –

+0

Merci Marius. Tu as raison. brb avec les résultats – Jim

+0

Un var_dump me donne: -5 * 3600 – Jim