Problème fonction date à devenir fou
julien33
-
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
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:
- Problème fonction date à devenir fou
- Fonction si et - Guide
- Qui veut devenir l'ami de julia - Forum Windows
- Jm date désabonnement ✓ - Forum Consommation & Internet
- Jm date avis - Forum Consommation & Internet
- Désabonnement JM date - Forum Consommation & Internet
1 réponse
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
Nota : je serais toi je manipulerais les dates toujours dans le format AAAAMMJJ
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
julien33
merci bcp j'ai pu m'en sortir grâce à tes fonctions, bonne fin de weekend.