Problème fonction date à devenir fou

julien33 -  
 julien33 -
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
Configuration: Windows XP
Internet Explorer 7.0

1 réponse

  1. PhP Messages postés 1774 Statut Membre 606
     
    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
    1. julien33
       
      merci bcp j'ai pu m'en sortir grâce à tes fonctions, bonne fin de weekend.
      0