Problème fonction date à devenir fou

Fermé
julien33 - 31 mai 2008 à 15:24
 julien33 - 31 mai 2008 à 18:08
Bonjour,
bonjour, j'ai un problème avec une fonction, la voici:

<?php
$datelien=$_GET['date'];
$date = preg_replace( '#(:digit:{2})(:digit:{2})(:digit:{4})#', '$1/$2/$3 00:00:00', $datelien );
echo $date;
echo '<br />';
echo $datelien;
echo '<br />';
$timestamp = strtotime ($date);
echo '<br />';
echo date('d/m/Y', $timestamp);
?>

sur ma page /news.php?date=18051993 voila ce que j'obtiens :

18/05/1993 00:00:00 /* >>>>> normal
18051993 /* >>>> normal

05/06/1994 /*incomprehensible du moins pour moi

si quelqu'un avait une petit idée, ca m'arrangerait fortement. merci
A voir également:

1 réponse

PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
31 mai 2008 à 16:01
Bjr

Oui c'est normal !

La fonction strtotime attend comme second paramètre un timestamp c'est-à-dire un nombre contenant le nombre de secondes écoulées depuis le 01/01/1970 et la date considérée.

Donc si tu passes 19930518 la fonction considère 19 930 518 secondes depuis le 01/01/1970 ...

A la place tu peux utiliser une fonction qui convertit la date

ex
<?php

// $value date au format aaaammjj
function AAAAMMJJToTimeStamp($value)
{
	$year = floor($value / 10000);
	$month = floor(($value-$year*10000)/100);
	$day = $value-$year*10000-$month*100;
	return mktime (0, 0, 0, $month, $day, $year);
}


// $value date au format jjmmaaaa
function JJMMAAAAToTimeStamp($value)
{
	$day = floor($value / 1000000);
	$month = floor(($value-$day*1000000)/10000);
	$year = $value-$day*1000000-$month*10000;
	return mktime (0, 0, 0, $month, $day, $year);
}

$ma_date = date('d/m/Y',JJMMAAAAToTimeStamp(18051993));
echo $ma_date;
?>



Nota : je serais toi je manipulerais les dates toujours dans le format AAAAMMJJ
0
merci bcp j'ai pu m'en sortir grâce à tes fonctions, bonne fin de weekend.
0