Obtenir le décalage horaire dans PHP donné un timestamp unix
J'ai un timestamp Unix, qui provient d'une base de données qui est (malheureusement) dans un fuseau horaire à un certain de, soit +3600 ou +7200, en fonction de l'heure d'été ou pas. Cela n'a jamais été un problème avant, mais notre site est actuellement jusqu'à une audience internationale et à cause de Javascript interaction avec dit d'horodateurs, j'ai besoin de convertir le timestamp sans aucun décalage.
Alors, comment puis-je, avec juste un timestamp Unix, obtenir le décalage du fuseau horaire, au moment du timestamp? Je suis à la recherche à travers le PHP docs, mais il y a tellement de date/heure de fonctions, je suis un peu perdu.
Je suis en utilisant PHP 5.2.3
alors que ce n'est pas à stocker des informations de fuseau horaire, heure unix est défini à l'UTC.
Mais ce n'est pas un UNIX Timestamp, plus ou moins, localisée si générés?
Que si quelque chose est très mal avec la configuration de votre serveur.
OriginalL'auteur Aistina | 2009-10-08
Vous devez vous connecter pour publier un commentaire.
Je me sens bête de nouveau pour répondre à ma propre question, mais je viens de trouver la
gmstrftime
fonction. Il semble faire exactement ce que je veux. Merci tout le monde!OriginalL'auteur Aistina
Vous ne pouvez pas le faire dans le cas général. Un timestamp Unix est juste le nombre de secondes depuis l'époque Unix, et ne contient pas toutes les informations d'horodatage.
Une chose qui pourrait fonctionner pour vous c'est de savoir si ou non un timestamp se produit lors d'une période de l'heure d'été est en vigueur, et puis de l'ajuster en conséquence. Cette approche échoue autour des limites bien (puisqu'il y a 2 significations pour chaque horodateur à l'heure immédiatement après l'heure d'été commence et immédiatement avant la fin).
À l'avenir, vous êtes probablement mieux de stocker des horodateurs en UTC, pour éviter justement ce genre de problème.
Le temps Unix est UTC, il a décalage de 0 et non de l'heure d'été ajustements. Il n'est pas nécessaire de régler votre timestamp unix.
Les horodateurs viennent de l'PHP
time()
fonction. Il obtient le temps unix et applique le décalage horaire du serveur.c'est vrai, mais je pense que par "timestamp Unix", l'OP se réfère seulement à un nombre qui représente le nombre de secondes depuis le 1er janvier 1970 à 00:00, dans certains fuseau horaire (qui apparaît à partir de sa réponse à été GMT avec la lumière du jour-l'épargne des ajustements).
OriginalL'auteur Dominic Rodger
Si vous en timestamp unix dire le temps unix (nombre de secondes depuis l'Époque), le décalage est toujours 0. L'époque est définie comme 00:00:00 UTC, le janvier 1, 1970. Note de l'UTC, qui a permis de compenser 0.
Application de décalage horaire et de l'heure d'été est gérée par les bibliothèques de convertir le timestamp en date/heure structures. (Je ne connais pas php, mais c'est à dire en C, la fonction localtime prend un timestamp unix, s'applique informations de fuseau horaire, soit à partir de l'environnement ou /etc/localtime fichier, et crache une struct des secondes, des minutes, des heures, et ainsi de suite).
OriginalL'auteur Kjetil Joergensen
U peut utiliser ceci:
Il sera de retour la différence à l'heure de Greenwich (GMT), en heures.
[source]
OriginalL'auteur Briganti
Serait-elle faire l'affaire?
Vous pouvez aussi faire:
À partir d'ici:
http://www.php.net/manual/en/function.date.php
OriginalL'auteur Mike A.