Convertir des secondes en heures minutes et secondes

Résolu
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 - 26 mai 2005 à 15:58
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 15 déc. 2016 à 00:34
voilà tt est dans le titre je me demande si qqun a deja fait ce script ou si qqun sait comment le faire...
par exemple faut il utiliser round(float,precision) ?
ou comment arrondir l unité a l inferieur ...
voilà ...

9 réponses

voilà ma fonction perso qui marche très bien, elle te retourne un texte formaté en français avec la précision de ton choix en 2ème argument (optionnel)...

tu peux modifier le tableau pour y ajouter les trimestres, supprimer les années, etc..

function time_to_str($time,$precision=2){
if($time=abs(intval($time))){
$s=['an'=>31556926,'mois'=>2629743,'semaine'=>604800,'jour'=>86400,'heure'=>3600,'minute'=>60,'seconde'=>1];
foreach($s as $a=>$b){if($time>=$b && $c=$time/$b){$c=intval($c);$time-=$b*$c;
$r[]="$c $a".($c>1?($a=='mois'?'':'s'):'');if(++$d==$precision)break;}}
return count($r)==1?$r[0]:(implode(' ',array_slice($r,0,-1)).' et '.array_shift(array_slice($r,-1,1)));}
return 'un instant';
}


Elle affiche des résultats comme :
-2 ans et 1 mois
-8 ans 1 mois 3 et semaines
-14 heures 6 minutes et 19 secondes

etc...
2
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
15 déc. 2016 à 00:34
Bonjour,
c'est gentil de partager ..... mais bon..; dans une discussion déjà marquée comme résolue.... et puis... 11 plus tard... ce n'est pas top.
Évite de déterrer de vieux sujets stp.
Merci.
0
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
26 mai 2005 à 16:38
tu mes le nombre de secondes dans une variable :


<?


$total = 46571; //ton nombre de secondes


$heure = intval(abs($total / 3600));


$total = $total - ($heure * 3600);


$minute = intval(abs($total / 60));


$total = $total - ($minute * 60);


$seconde = $total;


echo "$heure H : $minute min : $seconde sec";


?>

Voila

L0rD...
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
26 mai 2005 à 16:43
Salut!

J'utiliserais plutot % ( représente le reste de la division entière )
pour travailer sur des entiers et non des nombres à virgule flottante.



$secondes = 6546;

$temp = $secondes % 3600;

$time[0] = ( $secondes - $temp ) / 3600 ;

$time[2] = $temp % 60 ;

$time[1] = ( $temp - $time[2] ) / 60;



/*

heures: $time[0]

minutes: $time[1]

secondes: $time[2]

*/


@++



R@f


0
function sec_en_hms($t)
{
 $s=$t%60; $t=($t-$s)/60;
 $m=$t%60;
 $h=($t-$m)/60;

 if($m<10){$m="0".$m;}
 if($s<10){$s="0".$s;}

 return "$h:$m:$s";
}


Voilà de quoi transformer 7199 (secondes) en 1:59:59

Pour faire simple, on prend les secondes, puis on transforme le reste en minutes.
On recommence en prenant les minutes, le reste c'est les heures.

Les IF permettent de transformer "5" min en "05" min, c'est plus propre à l'affichage.

Attention, ca peut dépasser 24h !!! Ajouter une ligne si besoin des jours...

EDIT: Ajout de la coloration syntaxique.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
26 mai 2005 à 16:47
Oui... Moin compliquer et tout aussi éfficace... Après c'est lui qui vois

L0rD...
-1
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 mai 2005 à 19:54
Salut,



j'utiliserais plutôt ça :



$temps_en_secondes=time();



echo date('d/m/Y à H:i:s',$temps_en_secondes)


a +





<li>
-1
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
26 mai 2005 à 23:24
Oui, mais c'est pas forcément ce qu'on veut, Anthomicro... Si on reprend un truc genre 7615 secondes, le date n'ira pas...



@++



R@f

-1
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 mai 2005 à 23:41
Ah ok je comprends mieux, je croyais que tu voulais convertir la date
actuelle en secondes depuis le 1er janvier 1970 (timestamp)






<li>
-1
realitix Messages postés 1 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 14 octobre 2010
Modifié par Whismeril le 30/01/2015 à 18:14
Je déterre mais il y a plus simple maintenant:
$date_debut = new DateTime(ma_date_de_debut);
$date_fin = new DateTime(ma_date_de_fin); //on laisse vide pour avoir la date actuelle
$interval = $date_fin->diff($date_debut);
echo $interval->format('%a jour(s) %h heure(s) %i minute(s) %s seconde(s)');


plus d'infos ici:
http://www.php.net/manual/fr/dateinterval.format.php
-2
Rejoignez-nous