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

5/5 (3 avis)

Snippet vu 18 719 fois - Téléchargée 22 fois

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

Ajouter un commentaire Commentaires
SoldierZ Messages postés 12 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 4 mai 2009
9 avril 2009 à 21:07
moé ma box est po a bonne heure fecke sa va ben avec sa thanks x)
cs_taoufik13 Messages postés 1 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 12 février 2007
12 févr. 2007 à 15:17
bon
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 févr. 2007 à 08:18
Hello,

je tioens quand même à préciser que la fonction setlocale()
http://fr3.php.net/manual/fr/function.setlocale.php
fait tout ça très bien.
Mais étant donné qu'elle n'est pas fiable dans tous les cas de figure (cela dépend du serveur, de son installation, et de l'OS sur lequel il est installé), pourquoi pas.

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.