PHP date_default_timezone_set () Heure normale de l'Est (EST)
Longue histoire courte
Est-il un fonctionnaire de l'onu-déconseillé fuseau horaire que PHP5 reconnaît pour l'heure normale de l'est--pas d'heure AVANCÉE de l'est?
Histoire courte de long 😛
Wow, je ne peux pas croire que PHP permet un tel cluster-floogen de réglage de l'heure.
Je voudrais utiliser PHP5 est date_default_timezone_set() pour définir le fuseau horaire pour mon script. Je veux utiliser standard temps. Je ne pas veux que mon script pour observer l'heure d'été. Je ne veux pas avoir à utiliser gmtime() et soustraire 60*60*5 secondes à chaque fois que mon programme écrit d'une heure. Je ne veux pas enregistrer cette valeur à une variable. Réglage du fuseau horaire par défaut est plus élégant et rend le script plus portable vers d'autres serveurs et locales.
Malheureusement PHP nécessite-je utiliser une de leurs stupides "officiel fuseaux horaires" lors de la configuration du fuseau horaire par défaut. Il y a un "America/New_York" mais je n'ai aucune idée si elle ou l'un des officielle de PHP fuseaux horaires observer l'heure d'été. Par l'expérimentation, j'ai découvert que "America/New_York" observe l'heure d'été. "America/Panama" est et n'a donc pas d'observer l'heure d'été... mais que faire si le Panama devrait jamais changer d'avis à propos de l'heure d'été dans le futur? (Ils ont observé l'heure d'été en 1908)
Parce que le Panama pourrait toujours changer leur esprit; je veux juste utiliser le GMT ou UTC offset.
Puis il y a cette...
http://us.php.net/manual/en/timezones.others.php
Le lien ci-dessus de la liste de ce que je suis en supposant que sont obsolètes fuseaux horaires. "EST" est là, mais est très états-unis-centric donc, je comprends pourquoi c'est déconseillé. "Ect/GMT-5 en est-il de trop et je n'ai absolument aucune idée de pourquoi c'est déconseillé. Si vous me demandez, tous les noms de fuseaux horaires doit être désapprouvée et le GMT fuseaux horaires de l'onu-déconseillé... mais... "Ect/GMT-5" est en fait mal! J'ai dû utiliser "Ect/GMT+5" pour obtenir des états-unis Heure normale de l'est. Je suis assez sûr que je ne suis pas 5 heures à l'avance de l'Angleterre, ici, sur la Côte Est.
Répondu?
Personne n'a vraiment répondu à la question. Donc, je crois que je vais répondre moi-même. "Non, il n'est pas, de l'onu-déconseillé fuseau horaire que PHP5 reconnaît pour l'heure normale de l'est"
Beaucoup de gens m'ont dit que je doit stocker des dates que l'heure UTC et de les traduire à l'heure locale, lorsque je les ai retirées de stockage--quelque chose que je connais déjà. Le problème c'est que j'ai été embauché pour seulement corriger cette petite partie du script et je doute que le gars va permettez-moi de re-écrire son code complet qui il a été utilisé depuis l'aube de PHP soi-disant.
Je vais à contrecœur donner du crédit à le mec qui vous montre comment stocker correctement et de récupérer tant de fois l'avenir des gens de la recherche de ce savoir comment faire de la bonne façon.
source d'informationauteur mrbinky3000
Vous devez vous connecter pour publier un commentaire.
La chose que vous voulez faire n'est pas pratique et vous conduire à vos utilisateurs de vous haïr.
L'ensemble de la raison derrière le nom fuseau horaire pour représenter avec précision heure locale. Représentant "Standard" à la fois comme un heure locale lorsque cette région est à l'intérieur de l'heure d'été est objectivement incorrecte. Quelqu'un à l'intérieur de ce fuseau horaire qui lit le temps va être mal informé.
Si vous avez besoin de stocker et de travailler avec les dates et heures d'ignorer les zones de temps, puis utiliser UTC à cet effet, c'est à dire de stockage et de normal de mathématiques. Il est bon de se rappeler que même le bon vieux timestamp Unix est "secondes écoulées depuis minuit, le 1er janvier 1970, UTC".
Si vous avez besoin de représenter les heures locales à l'utilisateur, alors vous devriez leur permettre de choisir le fuseau horaire local, et de le convertir sur l'affichage. Moderne PHP DateTime et DateTimeZone faire ce morts-simple. À partir de l'invite de commandes:
Pas de gâchis, pas de chichi. Il a pris soin de maths pour nous lorsque nous sommes passés du fuseau horaire.
Dans l'alternative, si vous avez vraiment, vraiment, vraiment voulez aplatir l'heure d'été fuseaux horaires, regardez
getTransitions
etgetOffset
en combinaison avec les différents fuseau horairedate()
formatsI
en particulier. Vous pouvez poke et prod à l'information qui en résulte à trouver quand la version "standard" de l'heure d'été à côté de la zone de transitions et de l'ajuster en conséquence. Rappelez-vous que les différentes zones de transition à des moments différents, et pas toutes les zones de transition par la même quantité ... et ce n'est pas la transition. Je pense que quelqu'un a mentionné l'Indiana déjà.Normalement je me serais également fournir un exemple de code ici, mais aussi de la date de maths me remplit d'une insatiable soif de violence. Celui qui a décidé que 60, 60, 24, 7, 4-6, 12 et 52 ont été acceptable façons de penser le temps et les dates ont été mal, le mal de personnes. Heureusement ils ont tous été morts entre des centaines et des milliers d'années.
America/New_York
observe l'heure d'été et elle est recommandée pour le fuseau horaire. (Je suis allé à une conférence de l'année dernière où Derick Rethansqui a écrit beaucoup de la date/heure de code, a parlé.) L'idée derrière le régional de fuseaux horaires, c'est qu'ils obéissent aux règles de fuseau horaire pour la ville/région ils dénotent (c'est pourquoi il y a comme 7 fuseaux horaires de l'Indiana).Vous devriez toujours mettre fois à l'aide de l'UTC, qui est ce que
time()
retourne, puis réglez le fuseau horaire en fonction de l'emplacement du serveur, qui sera mis à jour de l'heure d'été, le cas échéant.Bien, si vous voulez vraiment les X heures avant ou après une date UTC, je ferais ceci:
Dans votre cas,
$hours
serait de 5, je pense.Comme d'autres l'ont suggéré, moi y compris, ce n'est pas bien pratique... Mais vous êtes au courant de cela.