Décalage de dates

WRInaute occasionnel
Bonjour à tous et à toutes,

je galère depuis quelques jours avec des décalages de dates !!
Voilà : j'ai conçu un tableau (un planning) qui liste des jours, avec des cellules toutes les demi-journées (il y a donc des décalages de 12 heures entre cellules). Tout va bien.
Sauf pour le dernier week-end d'octobre, car il y a...le changement d'heure hiver-été:
00:00 + 12heures = 11:00 (au lieu de 12:00 !)
puis 11:00 + 12H00 = 23:00 et on reste dans la même journée !! Bref, les demi-journées suivantes sont décalées !!

J'ai créé la fonction decalage_date suivante :
Code:
function decalage_date ($j, $decalage)
// $j string (ex: "21052004-12:00") retourne la date string (ex: "21052004-12:00") décalée de $decalage (en 1/2 journées)
// on ne tient pas compte des minutes ni des secondes
{
	$month 		= (int) substr($j, 2, 2);
	$day 		= (int) substr($j, 0, 2);
	$year		= (int) substr($j, 4 ,4);
	$hour		= (int) substr($j, 9, 2);
	// on recale au debut des demi-journées
	$timestamp = mktime ($hour, 0, 0, $month, $day, $year) + $decalage*3600*12;
	$date = date("dmY-H:00", $timestamp);

	return $date;
}
J'ai essayé avec strtotime, rien. J'ai php4, donc date_default_timezone_set n'est pas utilisable, bref, j'ai essayé plein de soluces, et je me tourne maintenant vers vous. Une idée ??
 
WRInaute impliqué
Le changement de date a lieu le 29 octobre 2007 à 3h (il sera 2h).
prends le timestamp de cette date:
$timestamp_2 = mktime (3, 0, 0, 10, 29, 2007);
compare $timestamp avec cette date et retourne $timestamp modifié:
$timestamp=($timestamp>timestamp_2)?$timestamp-3600:$timestamp;
Ca marche comme ça ?
 
Discussions similaires
Haut