web-dev-qa-db-fra.com

UTC observe-t-il l'heure d'été?

J'essaie d'écrire un script dans lequel je veux convertir n'importe quel fuseau horaire en UTC et inverser. Mais de certains pays où j'ai appris que, lors de la conversion d'un fuseau horaire en UTC avec ou sans considération d'heure D'ÉTÉ, il donnerait le même temps UTC. Par exemple: Si j'essaye de convertir celui-ci:

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

à 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 corect ?? Si oui, alors pourquoi ??? S'il vous plaît, quiconque me donne vos réponses.

75
0001

Non, UTC lui-même n'a jamais été à l'heure d'été. C'est le cadre de référence constant auquel les autres fuseaux horaires sont exprimés par rapport à.

De la page UTC de Wikipedia :

Le temps 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, 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'heure UTC change lorsqu'il y a une transition heure d'été, mais que ce fuseau horaire qui observe l'heure d'été, et non l'UTC .

Sans en savoir beaucoup sur le PHP la gestion des fuseaux horaires, 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 le moment où DST entre en jeu. .. cela ne devrait pas être quelque chose que vous spécifiez vous-même.

124
Jon Skeet

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 le temps que ce code produit a une heure de retard - je ne pense donc pas que le temps UTC dans PHP s'ajuste à l'heure d'été).

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

MODIFIER:

Trouvé ce code sur un forum, 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 à l'aide de $ TIME. La sortie peut être ajustée pour l'afficher différemment en modifiant le bit à l'intérieur de la balise date (). Si vous souhaitez ajuster la sortie date (), utilisez ce guide: http://php.net/manual/en/function.time.php

J'espère que cela t'aides :)

1
MattFiler