Affichage de l'heure en tenant compte de l'heure d'été à partir de la donnée du fuseau horaire

Contenu du snippet

Ce petit script permet d'afficher l'heure en fonction d'un fuseau horaire. Et l'heure d'été est calculée automatiquement.
Par exemple pour la france, on met $france=1; et il calcule quand l'heure d'été va changer, et rajouter une heure s'il se trouve que l'heure d'été est active.
Normalement, j'ai fait attention à ce que le changement d'heure soit exact, c'est à dire changer à 2h du matin en début de période, et rechanger à 3h du matin en fin de période, mais il se peut que ça ne fonctionne pas rigoureusement ainsi.

Source / Exemple :


<?php 
$france=1;//ici on met le fuseau horaire

function dimanche($date)//calcule la date du dernier dimanche avant la date donnée
	{
	while (date("D", $date ) !='Sun')//calcule la date de début d'heure d'été
		{
		$date = mktime(0,0,0,date("m",$date), date("d",$date)-1, date("Y",$date)); //On retire 1 jour par rapport à la date examinée
		}
	return $date;
	}

function ete($decalage)//determine si on est en heure d'été et rajoute une heure en consequence
{
$debut = dimanche(mktime(0,0,0,03,31,date("Y"))); // 31-03-$annee
$fin = dimanche(mktime(0,0,0,10,31,date("Y"))); // 31-10-$annee

if (time()>=mktime(2+$decalage,0,0,date("m",$debut), date("d",$debut), date("Y",$debut)))
	{
	if (time()<mktime(3+$decalage,0,0,date("m",$fin), date("d",$fin), date("Y",$fin)))
		{
		$decalage+=1;
		}
	}
	
return $decalage;
}

$france=ete($france);

echo "Il est ";
echo gmdate("H:i", time() + $france*3600);
echo " en France";
?>

Conclusion :


A l'origine, j'ai fais ceci pour afficher l'heure du québec et de la france sur la même page, et je me suis rendu compte que rigoureusement, les deux heures ne se mettaient pas à l'heure d'été en même temps, normalement, ceci est pris en compte avec ce script, mais je ne suis pas certain de son fonctionnement exact.

Ce script est basé sur le script "JOUR DU PASSAGE À L'HEURE D'ÉTÉ / HEURE D'HIVER" disponible à l'adresse suivante http://www.phpcs.com/codes/JOUR-PASSAGE-HEURE-ETE-HEURE-HIVER_31684.aspx

et je remercie donc son auteur jeremyg vu que je me suis basé sur son script pour construire le mien.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.