- function date_elapsednaturaltime($timestamp1,$timestamp2=0)
- {
- if ($timestamp2 == 0)
- {
- $timestamp2 = date('U');
- }
-
- $a = date("Y",$timestamp1);
- $m = date("n",$timestamp1);
- $j = date("j",$timestamp1);
-
- $an = date("Y",$timestamp2) - $a;
- $mois = date("n",$timestamp2) - $m;
- $jour = date("j",$timestamp2) - $j;
-
- // Durée en année, mois, jours.
- if ($jour<0)
- {
- $d2=mktime(0,0,0,date("n")-1,date("j"),date("Y"));
- $diff=date_nbdays4month(date("n",$d2),date("Y",$d2));
- $jour+=$diff;
- $mois--;
- }
-
- if ($mois<0)
- {
- $mois+=12;
- $an--;
- }
-
- $txt = '';
-
- if ($an == 1)
- {
- // Depuis 1 an
- if (($mois >= 6) AND ($mois <= 7))
- {
- $txt.= '1 an et demi';
- }
- else if ($mois >= 11)
- {
- $txt.= '2 ans';
- }
- else if ($mois >= 2)
- {
- $txt.= '1 an, et '.$mois.' mois';
- }
- else
- {
- $txt.= '1 an';
- }
- }
- else if ($an > 1)
- {
- // Depuis plusieurs années
- if ($mois < 5)
- {
- $txt.= $an.' ans';
- }
- else if ($mois <= 8)
- {
- $txt.= $an.' ans et demi';
- }
- else
- {
- $txt.= ($an+1).' ans';
- }
- }
- else if ($mois >= 1)
- {
- // Depuis plusieurs mois
- if ($jour < 16)
- {
- $txt.= $mois.' mois';
- }
- else if (($jour >= 14) AND ($jour <= 16))
- {
- $txt.= $mois.' mois et demi';
- }
- else
- {
- $txt.= ($mois+1).' mois';
- }
- }
- else if ($jour >= 1)
- {
- if ($jour == 1)
- {
- $txt.= '24 heures';
- }
- else if ($jour >=29)
- {
- $txt.= '1 mois';
- }
- else if (($jour >=6) AND ($jour <= 8))
- {
- $txt.= '1 semaine';
- }
- else if ($jour >= 16)
- {
- $txt.= ceil($jour/7).' semaines';
- }
- else
- {
- $txt.= $jour.' jours';
- }
- }
- else
- {
- $ecart = ceil(date('U',$timestamp2)-date('U',$timestamp1));
- if (($ecart <= 65) AND ($ecart >= 58))
- {
- $txt ='1 minute';
- }
- else if ($ecart <= 60)
- {
- $txt = $ecart.' secondes';
- }
- else if (($ecart >= (58 * 60)) AND ($ecart <= (62 * 60)))
- {
- $txt = '1 heure';
- }
- else if ($ecart <= (60 * 60))
- {
- $txt = ceil($ecart/60).' minutes';
- }
- else if (($ecart >= (73 * 60)) AND ($ecart <= (77 * 60)))
- {
- $txt = '1 heure et quart';
- }
- else if (($ecart >= (88 * 60)) AND ($ecart <= (92 * 60)))
- {
- $txt = '1 heure et demi';
- }
- else if ($ecart < (120 * 60))
- {
-
- $txt = '1 heure, et '.ceil(($ecart-(60*60))/60).' minutes';
- }
- else
- {
- $txt = ceil($ecart/(60*60)).' heures';
- }
- }
-
- return $txt;
- }
-
- function date_nbdays4month($month,$year)
- {
- if ($month==2)
- {
- if($year%4) return 28;
- elseif($year%100) return 29;
- elseif($year%1000) return 28;
- else return 29;
- }
- else if (($month==4)||($month==6)||($month==9)||($month==11))
- {
- return 30;
- }
- return 31;
- }
function date_elapsednaturaltime($timestamp1,$timestamp2=0)
{
if ($timestamp2 == 0)
{
$timestamp2 = date('U');
}
$a = date("Y",$timestamp1);
$m = date("n",$timestamp1);
$j = date("j",$timestamp1);
$an = date("Y",$timestamp2) - $a;
$mois = date("n",$timestamp2) - $m;
$jour = date("j",$timestamp2) - $j;
// Durée en année, mois, jours.
if ($jour<0)
{
$d2=mktime(0,0,0,date("n")-1,date("j"),date("Y"));
$diff=date_nbdays4month(date("n",$d2),date("Y",$d2));
$jour+=$diff;
$mois--;
}
if ($mois<0)
{
$mois+=12;
$an--;
}
$txt = '';
if ($an == 1)
{
// Depuis 1 an
if (($mois >= 6) AND ($mois <= 7))
{
$txt.= '1 an et demi';
}
else if ($mois >= 11)
{
$txt.= '2 ans';
}
else if ($mois >= 2)
{
$txt.= '1 an, et '.$mois.' mois';
}
else
{
$txt.= '1 an';
}
}
else if ($an > 1)
{
// Depuis plusieurs années
if ($mois < 5)
{
$txt.= $an.' ans';
}
else if ($mois <= 8)
{
$txt.= $an.' ans et demi';
}
else
{
$txt.= ($an+1).' ans';
}
}
else if ($mois >= 1)
{
// Depuis plusieurs mois
if ($jour < 16)
{
$txt.= $mois.' mois';
}
else if (($jour >= 14) AND ($jour <= 16))
{
$txt.= $mois.' mois et demi';
}
else
{
$txt.= ($mois+1).' mois';
}
}
else if ($jour >= 1)
{
if ($jour == 1)
{
$txt.= '24 heures';
}
else if ($jour >=29)
{
$txt.= '1 mois';
}
else if (($jour >=6) AND ($jour <= 8))
{
$txt.= '1 semaine';
}
else if ($jour >= 16)
{
$txt.= ceil($jour/7).' semaines';
}
else
{
$txt.= $jour.' jours';
}
}
else
{
$ecart = ceil(date('U',$timestamp2)-date('U',$timestamp1));
if (($ecart <= 65) AND ($ecart >= 58))
{
$txt ='1 minute';
}
else if ($ecart <= 60)
{
$txt = $ecart.' secondes';
}
else if (($ecart >= (58 * 60)) AND ($ecart <= (62 * 60)))
{
$txt = '1 heure';
}
else if ($ecart <= (60 * 60))
{
$txt = ceil($ecart/60).' minutes';
}
else if (($ecart >= (73 * 60)) AND ($ecart <= (77 * 60)))
{
$txt = '1 heure et quart';
}
else if (($ecart >= (88 * 60)) AND ($ecart <= (92 * 60)))
{
$txt = '1 heure et demi';
}
else if ($ecart < (120 * 60))
{
$txt = '1 heure, et '.ceil(($ecart-(60*60))/60).' minutes';
}
else
{
$txt = ceil($ecart/(60*60)).' heures';
}
}
return $txt;
}
function date_nbdays4month($month,$year)
{
if ($month==2)
{
if($year%4) return 28;
elseif($year%100) return 29;
elseif($year%1000) return 28;
else return 29;
}
else if (($month==4)||($month==6)||($month==9)||($month==11))
{
return 30;
}
return 31;
}