Voila ce script (non-dynamique) en PHP est on ne peut plus simple, il permet de passer d'un temps exprimé en secondes (mettons 125000), donc très logique un temps enregistré dans une BDD sous la forme int (entier), en un horaire affichable sur un page.
Son fonctionnement =>
1ere étape :
Il retranche le nombre de jours au compteur de secondes et crée une variable $jour.
Il retranche le nombre d'heures au compteur de secondes et crée une variable $heure.
Il retranche le nombre de minutes au compteur de secondes et crée une variable $minute.
Il crée une variable $secondes avec ce qu'il reste.
2eme étape :
Il rajoute les 0 manquants aux valeurs en dessous de 10 pour les rendre affichables.
3eme étape :
Il sélectionne l'affichage des données pour éviter d'en afficher trop, du genre temps = 0j 00:00:10, mais pour afficher seulement 00:10 (ou personnalisable, bien sur).
et il retourne la valeur dans une variable de type chaîne de caractère.
Source / Exemple :
<!-- fonction de conversion secondes => Jour Heure Minute Seconde - Par MonkeyIsBack le 13 novembre 2009 -->
<?php
// Fonction convertir secondes en heures
function Convert_Sec_JHms($Seconde)
{
// Transformation Secondes en Jour Heure minute seconde
while ($Seconde >= 86400)
{$Jour = $Jour + 1; $Seconde = $Seconde - 86400;}
while ($Seconde >= 3600)
{$Heure = $Heure + 1; $Seconde = $Seconde - 3600;}
while ($Seconde >= 60)
{$Minute = $Minute + 1; $Seconde = $Seconde - 60;}
// Ajout des zéros au cas où l'affichage soit en dessous de 10
if ($Heure < 10)
{$Heure = '0'.$Heure;}
if ($Minute < 10 AND $Minute > 0)
{$Minute = '0'.$Minute;}
if ($Minute == 0)
{$Minute = '00';}
if ($Seconde < 10)
{$Seconde = '0'.$Seconde;}
// Retourne une variable la plus petite possible
if ($Jour > 0)
{$Convert = $Jour.'j '.$Heure.':'.$Minute.':'.$Seconde; return $Convert;}
elseif ($Heure > 0)
{$Convert = $Heure.':'.$Minute.':'.$Seconde; return $Convert;}
elseif ($Minute > 0)
{$Convert = $Minute.':'.$Seconde; return $Convert;}
else
{$Convert = '00:'.$Seconde; return $Convert;}
}?>
Conclusion :
Conclusion :
Pour appeller la fonction, il suffit de faire :
<?php $TempsJHms = function Convert_Sec_JHms(12500);
echo $TempsJHms; // affiche 20:00 ?>
ou, plus simple mais plus risqué pour le bon fonctionnement du code :
<?php echo Convert_Sec_JHms(150200); // affiche 1j 17:43:20 ?>
Bien sur, on peut s'en servir très facilement avec une variable
Convert_Sec_JHms($Valeur);
Dans le cas de fonction pour transformer du temps en lettre, l'utilisation dans un page ce limite souvent à une ou à quelques utilisations. Dans ce cas, les fonctions natives sont à privilégier puisqu'ils sont déjà précompilés dans des dll. Si tu aurais fais des benchmarks sur le temps de première itération pour les deux fonctions, la fonction date aurait été la plus rapide.
P.S.: Des benchmarks c'est souvent comme des statistiques, on peut faire dire pratiquement n'importe quoi avec.
Voila, j'ai téléchargé le zip du programme de transformation du temps en sevcondes, minutes et heures, mais je ne sais pas comment l'éxecuter, ( je suis vraiment trés débutant).
Salutations
Mais je persiste sur mon commentaire précédent... Ton code est quand même beaucoup moins clair.
function Convert_Sec_JHms($Seconde)
{
// Transformation Secondes en Jour Heure minute seconde
$Jour = floor($Seconde / 86400);
$Seconde = $Seconde - ($Jour * 86400); // Parenthèse facultative
$Heure = floor($Seconde / 3600);
$Seconde = $Seconde - ($Heure * 3600);
$Minute = floor($Seconde / 60);
$Seconde = $Seconde - ($Minute * 60);
// Ajout des zéros au cas où l'affichage soit en dessous de 10
if ($Heure < 10)
{$Heure = '0'.$Heure;}
if ($Minute < 10 AND $Minute > 0)
{$Minute = '0'.$Minute;}
if ($Minute == 0)
{$Minute = '00';}
if ($Seconde < 10)
{$Seconde = '0'.$Seconde;}
// Retourne une variable la plus petite possible
if ($Jour > 0)
{return $Jour.'j '.$Heure.':'.$Minute.':'.$Seconde;}
elseif ($Heure > 0)
{return $Heure.':'.$Minute.':'.$Seconde;}
else
{return $Minute.':'.$Seconde;}
}
PS : ma fonction ne donne aucune erreur possible, quelque soit le nombre de secondes, tout est exact à l'unité près ;-) (j'ai vérifié toutes les valeurs genre 60 seconde => 01:00, 3600 => 01:00:00, également pour le nombre de jours etc etc
Le temps obtenu de 1.2 secondes est pour 200000 itérations... Ce qui veut dire que sur une seule exécution, la différence est vraiment dérisoire (en physique on parle de négligeable).
Il ne faut donc pas se focaliser trop sur les performances : mieux vaut accorder de l'importance à un code concis, qui ne laisse pas de place à l'erreur, facile à lire et à comprendre et donc facile à corriger/maintenir.
Suivant ces critères objectifs, le code d'Arto est le "meilleur".
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.