79 votes

L'UTC observe-t-elle l'heure d'été ?

J'essaie d'écrire un script où je veux convertir n'importe quel fuseau horaire en UTC et inversement. Mais j'ai appris que lors de la conversion d'un fuseau horaire en un autre, il est possible de convertir le fuseau en un autre. UTC avec ou sans considération DST, il donnera la même UTC temps. Par exemple : Si j'essaie de convertir celui-ci :

$mytime = '2011-03-31 05:06:00.000';
$myzone = 'America/New_York';

à l'UTC avec DST et sans DST, je vais obtenir

(New_York->UTC DST=Yes)2011-03-31 09:06:00
(New_York->UTC DST=No)2011-03-31 09:06:00 ..........

Est-ce correct ? Si oui, pourquoi ? Veuillez me donner vos réponses.

130voto

Jon Skeet Points 692016

Non, l'UTC lui-même ne connaît pas l'heure d'été. Il est le cadre de référence constant par rapport auquel les autres fuseaux horaires sont exprimés.

De la Page Wikipedia UTC :

L'UTC ne change pas avec le changement de saison, mais l'heure locale ou l'heure civile peut changer si une juridiction de fuseau horaire observe l'heure d'été ou l'heure d'été. Par exemple, l'UTC a 5 heures d'avance sur l'heure locale sur la côte est des États-Unis en hiver, mais 4 heures d'avance en été.

En d'autres termes, lorsqu'un fuseau horaire observe l'heure d'été, son décalage par rapport à l'UTC change lorsqu'il y a une transition vers l'heure d'été, mais ce n'est pas le cas. ce fuseau horaire observant l'heure d'été, pas l'heure d'hiver.

Sans en savoir beaucoup sur la gestion des fuseaux horaires en PHP, il me semble étrange que vous puissiez spécifier "avec DST" ou "sans DST" dans une conversion - les fuseaux horaires eux-mêmes spécifient quand le DST entre en vigueur... cela ne devrait pas être quelque chose que vous devez spécifier vous-même.

1voto

MattFiler Points 1

J'ai le même problème, en utilisant ce code :

date_default_timezone_set('UTC');
$nowdate = date('l jS \of F Y h:i:s A');
echo "Current date and time is: " . $nowdate;

C'est l'été maintenant, et l'heure que ce code produit a une heure de retard - je ne pense donc pas que l'heure UTC de PHP s'ajuste à l'heure d'été.

Il serait intéressant de voir si quelqu'un a la solution...

EDIT :

J'ai trouvé ce code sur un forum, il fonctionne parfaitement !

date_default_timezone_set('Europe/London');
$TIME =  date("m/d/Y H:i",time());

Vous pouvez donc appeler la date et l'heure actuelles en utilisant $TIME. La sortie peut être ajustée pour l'afficher différemment en changeant le bit à l'intérieur de la balise date(). Si vous voulez ajuster la sortie de date(), utilisez ce guide : http://php.net/manual/en/function.time.php

J'espère que cela vous aidera :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X