Il y a une erreur dans ton script, si j'ai $date = 3700 ça affichera simplement "1 heure". Je pense qu'à l'origine tu voulais plutôt quelque chose comme "1 heure, 1 minute et 40 secondes", non ?
Si c'est le cas, ce sera plutôt :
Si c'est le cas, ce sera plutôt :
Code PHP :
<?php
function timeToFR($time) {
static $units = array(
'semaine' => 604800,
'jour' => 86400,
'heure' => 3600,
'minute' => 60,
'seconde' => 1,
);
$time_elements = array();
foreach ($units as $unit => $duration) {
if ($time >= $duration) {
$nb_units = floor($time / $duration);
$time = $time % $duration;
if ($nb_units >= 1) {
$time_element = $nb_units . ' ' . $unit;
if ($nb_units > 1) {
$time_element .= 's';
}
$time_elements[] = $time_element;
}
}
}
$last_time_element = array_pop($time_elements);
$first_part = count($time_elements) ? implode(', ', $time_elements) . ' et ' : '';
return $first_part . $last_time_element;
}