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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 18 384 fois - Téléchargée 20 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

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

bon
malalam
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
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.