Convertir des secondes en heures minutes et secondes [Résolu]

Teclis01 1423 Messages postés mardi 14 décembre 2004Date d'inscription 29 décembre 2012 Dernière intervention - 26 mai 2005 à 15:58 - Dernière réponse : jordane45 20570 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention
- 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à ...
Afficher la suite 

10 réponses

Répondre au sujet
xactise 507 Messages postés mardi 18 février 2003Date d'inscription 22 juin 2012 Dernière intervention - 26 mai 2005 à 16:38
0
Utile
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...
Commenter la réponse de xactise
coockiesch 2268 Messages postés mercredi 27 novembre 2002Date d'inscription 13 septembre 2013 Dernière intervention - 26 mai 2005 à 16:43
0
Utile
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


Commenter la réponse de coockiesch
blacko-afrikaf 17 Messages postés jeudi 21 novembre 2013Date d'inscription 14 décembre 2016 Dernière intervention - Modifié par blacko-afrikaf le 14/12/2016 à 22:52
0
Utile
1
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...
jordane45 20570 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention - 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.
Commenter la réponse de blacko-afrikaf
xactise 507 Messages postés mardi 18 février 2003Date d'inscription 22 juin 2012 Dernière intervention - 26 mai 2005 à 16:47
-1
Utile
Oui... Moin compliquer et tout aussi éfficace... Après c'est lui qui vois

L0rD...
Commenter la réponse de xactise
cs_Anthomicro 9440 Messages postés mardi 9 octobre 2001Date d'inscription 13 avril 2007 Dernière intervention - 26 mai 2005 à 19:54
-1
Utile
Salut,



j'utiliserais plutôt ça :



$temps_en_secondes=time();



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


a +





<li>
Commenter la réponse de cs_Anthomicro
coockiesch 2268 Messages postés mercredi 27 novembre 2002Date d'inscription 13 septembre 2013 Dernière intervention - 26 mai 2005 à 23:24
-1
Utile
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

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






<li>
Commenter la réponse de cs_Anthomicro
-1
Utile
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.
Commenter la réponse de capock
realitix 1 Messages postés mardi 25 juillet 2006Date d'inscription 14 octobre 2010 Dernière intervention - Modifié par Whismeril le 30/01/2015 à 18:14
-2
Utile
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
Commenter la réponse de realitix

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.