J'ai besoin de convertir les secondes en "Heure:Minute:Seconde".
Par exemple : "685" converti en "00:11:25".
Comment puis-je y parvenir ?
J'ai besoin de convertir les secondes en "Heure:Minute:Seconde".
Par exemple : "685" converti en "00:11:25".
Comment puis-je y parvenir ?
Une petite astuce que je viens d'utiliser est la suivante : $recording_length = explode(" :", gmdate("H:i:s", $recording_length)) - Crée un tableau où l'élément 0 est l'heure, 1=minute & 2=sec.
Quelqu'un pourrait-il m'expliquer pourquoi cela fonctionne avec gmdate()
et pourquoi le nombre de secondes doit être inférieur à un jour ?
Une heure c'est 3600sec, une minute c'est 60sec donc pourquoi pas :
<?php
$init = 685;
$hours = floor($init / 3600);
$minutes = floor(($init / 60) % 60);
$seconds = $init % 60;
echo "$hours:$minutes:$seconds";
?>
qui produit :
$ php file.php
0:11:25
(Je ne l'ai pas beaucoup testé, il peut donc y avoir des erreurs avec le sol ou autre).
Bonne réponse, mais assurez-vous de soustraire $hours*3600 et $minutes*60 de $init entre chaque opération, sinon vous finirez par compter deux fois les minutes et les secondes.
Fonction d'utilisation gmdate()
seulement si les secondes sont inférieures à 86400
(1 jour) :
$seconds = 8525;
echo gmdate('H:i:s', $seconds);
# 02:22:05
Voir : gmdate()
Convertir les secondes au format 'pied'. aucune limite* :
$seconds = 8525;
$H = floor($seconds / 3600);
$i = ($seconds / 60) % 60;
$s = $seconds % 60;
echo sprintf("%02d:%02d:%02d", $H, $i, $s);
# 02:22:05
Voir : floor() , sprintf() , opérateurs arithmétiques
Exemple d'utilisation de DateTime
extension :
$seconds = 8525;
$zero = new DateTime("@0");
$offset = new DateTime("@$seconds");
$diff = $zero->diff($offset);
echo sprintf("%02d:%02d:%02d", $diff->days * 24 + $diff->h, $diff->i, $diff->s);
# 02:22:05
Voir : DateTime::__construct() , DateTime::modify() , clone , sprintf()
Exemple MySQL L'étendue du résultat est limitée à celle du type de données TIME, qui est comprise entre 0 et 100 %. -838:59:59
à 838:59:59
:
SELECT SEC_TO_TIME(8525);
# 02:22:05
Voir : SEC_TO_TIME
Exemple de PostgreSQL :
SELECT TO_CHAR('8525 second'::interval, 'HH24:MI:SS');
# 02:22:05
// TEST
// 1 Day 6 Hours 50 Minutes 31 Seconds ~ 111031 seconds
$time = 111031; // time duration in seconds
$days = floor($time / (60 * 60 * 24));
$time -= $days * (60 * 60 * 24);
$hours = floor($time / (60 * 60));
$time -= $hours * (60 * 60);
$minutes = floor($time / 60);
$time -= $minutes * 60;
$seconds = floor($time);
$time -= $seconds;
echo "{$days}d {$hours}h {$minutes}m {$seconds}s"; // 1d 6h 50m 31s
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
4 votes
La question est ambiguë : vous souhaitez convertir votre
seconds
à undate/time
ou à une quantité de Heures:Minute:Secondes ?