Assurez-vous cependant que le nombre de secondes est inférieur à 86 400.
salathe
12
H représente le nombre d'heures dans une seule journée. Donc, si vous avez 90000 secondes et que vous utiliserez H dessus, le résultat sera 01 (première heure d'un jour suivant). PAS 25 - il n'y a que 24 heures par jour.
MarcinWolny
7
Je ne suis pas sûr que ce soit la bonne réponse, cela produira un datetime... donc si nous nous attendons à un résultat> 24 heures, cela ne fonctionnera pas. De plus, si nous avons besoin d'un résultat négatif (par exemple, travailler avec un décalage), cela ne fonctionnera pas. -1pour l'alouette des détails
WonderLand
54
Cela ne devrait pas être la réponse acceptée en raison de la faille évidente des durées supérieures à 24 heures.
Scott Flack
10
Pour une utilisation avec des jours où les nombres peuvent être supérieurs à 85399, vous pouvez utiliser echo gmdate("z H:i:s", 685);z est le nombre de jours de l'année commençant par 0. Vous pouvez évidemment consulter le manuel de la date php pour répondre à vos besoins spécifiques.
Nightwolf
177
Une heure est 3600sec, une minute est 60sec alors pourquoi pas:
Bonne réponse, mais assurez-vous de soustraire $ heures * 3600 et $ minutes * 60 de $ init entre chaque opération, sinon vous finirez par compter deux fois les minutes et les secondes.
Mike Stowe
5
Pour ajouter au commentaire de @ Amber, utilisez sprintfpour renvoyer la valeur au lieu de l'imprimer.
Allen Butler
77
Voici
function format_time($t,$f=':')// t = seconds, f = separator {return sprintf("%02d%s%02d%s%02d", floor($t/3600), $f,($t/60)%60, $f, $t%60);}
echo format_time(685);// 00:11:25
Ne fonctionne pas pour les valeurs négatives. Si vous avez un intervalle de secondes négatif, utilisez ceci:return ($t< 0 ? '-' : '') . sprintf("%02d%s%02d%s%02d", floor(abs($t)/3600), $f, (abs($t)/60)%60, $f, abs($t)%60); }
Ajax
66
Utilisez la fonction gmdate()uniquement si les secondes sont inférieures à 86400(1 jour) :
D'autres solutions utilisent gmdate, mais échouent dans les cas limites où vous disposez de plus de 86400 secondes. Pour contourner cela, nous pouvons simplement calculer le nombre d'heures nous-mêmes, puis laisser gmdatecalculer les secondes restantes en minutes / secondes.
$ hms = gmdate ("H: i: s", 12720); il ne suffit pas d'obtenir Day-Hour-Min-Sec
mughal
7
gmdate("H:i:s", no_of_seconds);
Ne donnera pas l'heure au H:i:sformat si elle no_of_secondsest supérieure à 1 jour (secondes dans une journée).
Il négligera la valeur journalière et ne donnera queHour:Min:Seconds
Par exemple:
gmdate("H:i:s",89922);// returns 0:58:42 not (1 Day 0:58:42) or 24:58:42
@barfoon - vrai, mais je crois que c'est ce que M.Ezz demandait, et c'est une norme utilisée dans le temps. Cela semble étrange de mon expérience "3: 7: 5" au lieu de "03:07:05", ou même "3: 7", ressemble plus à un rapport pour moi.
Kerry Jones
3
La fonction gmtdate () n'a pas fonctionné pour moi car je suivais les heures travaillées sur un projet et si c'est plus de 24 heures, vous obtenez le montant restant après 24 heures est soustrait. En d'autres termes, 37 heures deviennent 13 heures. (tout comme indiqué ci-dessus par Glavic - merci pour vos exemples!) Celui-ci a bien fonctionné:
Ce code évite autant que possible les appels de fonctions fastidieux et la construction de chaînes pièce par pièce, et les fonctions importantes et encombrantes que les gens font pour cela.
Il produit le format "1h05m00s" et utilise des zéros non significatifs pendant les minutes et les secondes, tant qu'un autre composant temporel non nul les précède.
Et il saute tous les principaux composants vides pour éviter de vous donner des informations inutiles comme "0h00m01s" (à la place, cela apparaîtra comme "1s").
Exemples de résultats: "1s", "1m00s", "19m08s", "1h00m00s", "4h08m39s".
Si vous souhaitez rendre le code encore plus court (mais moins lisible), vous pouvez éviter le $convertedtableau et placer les valeurs directement dans l'appel sprintf (), comme suit:
La durée doit être égale ou supérieure à 0 dans les deux éléments de code ci-dessus. Les durées négatives ne sont pas prises en charge. Mais vous pouvez gérer des durées négatives en utilisant à la place le code alternatif suivant:
Notez que le gmdate()hack est encore plus court que cela, mais ne prend en charge que des durées allant jusqu'à 24 heures. Tout ce qui dépasse 24 heures échouera si vous utilisez l'astuce gmdate!
gw0
1
Un moyen simple d'utiliser DateTime pour cela est:
Eh bien, j'avais besoin de quelque chose qui réduirait les secondes en heures minutes et secondes, mais dépasserait 24 heures, et ne se réduirait pas davantage en jours.
Voici une fonction simple qui fonctionne. Vous pouvez probablement l'améliorer ... Mais le voici:
$given =685;/*
* In case $given == 86400, gmdate( "H" ) will convert it into '00' i.e. midnight.
* We would need to take this into consideration, and so we will first
* check the ratio of the seconds i.e. $given:$number_of_sec_in_a_day
* and then after multiplying it by the number of hours in a day (24), we
* will just use "floor" to get the number of hours as the rest would
* be the minutes and seconds anyways.
*
* We can also have minutes and seconds combined in one variable,
* e.g. $min_sec = gmdate( "i:s", $given );
* But for versatility sake, I have taken them separately.
*/
$hours =( $given >86399)?'0'.floor(( $given /86400)*24)-gmdate("H", $given ): gmdate("H", $given );
$min = gmdate("i", $given );
$sec = gmdate("s", $given );
echo $formatted_string = $hours.':'.$min.':'.$sec;
Si vous devez le faire en javascript, vous pouvez le faire en une seule ligne de code comme indiqué ici Convertissez les secondes en HH-MM-SS avec JavaScript . Remplacez SECONDES par ce que vous souhaitez convertir.
var time =newDate(SECONDS *1000).toISOString().substr(11,8);
Juste au cas où quelqu'un d'autre chercherait une fonction simple pour renvoyer ce format bien (je sais que ce n'est pas le format demandé par l'OP), c'est ce que je viens de trouver. Merci à @mughal pour le code sur lequel il était basé.
seconds
en undate/time
ou en un nombre d'heures: Minute: Secondes?Réponses:
Vous pouvez utiliser la
gmdate()
fonction:la source
datetime
... donc si nous nous attendons à un résultat> 24 heures, cela ne fonctionnera pas. De plus, si nous avons besoin d'un résultat négatif (par exemple, travailler avec un décalage), cela ne fonctionnera pas.-1
pour l'alouette des détailsecho gmdate("z H:i:s", 685);
z est le nombre de jours de l'année commençant par 0. Vous pouvez évidemment consulter le manuel de la date php pour répondre à vos besoins spécifiques.Une heure est 3600sec, une minute est 60sec alors pourquoi pas:
qui produit:
(Je n'ai pas beaucoup testé, donc il pourrait y avoir des erreurs avec le sol ou plus)
la source
printf("%02d:%02d:%02d", $hours, $minutes, $seconds);
sprintf
pour renvoyer la valeur au lieu de l'imprimer.Voici
la source
return ($t< 0 ? '-' : '') . sprintf("%02d%s%02d%s%02d", floor(abs($t)/3600), $f, (abs($t)/60)%60, $f, abs($t)%60); }
Utilisez la fonction
gmdate()
uniquement si les secondes sont inférieures à86400
(1 jour) :Voir: gmdate ()
Exécutez la démo
Convertissez les secondes au format par 'pied' sans limite * :
Voir: floor () , sprintf () , opérateurs arithmétiques
Exécutez la démo
Exemple d'utilisation de l'
DateTime
extension:Voir: DateTime :: __ construct () , DateTime :: modify () , clone , sprintf ()
Exécutez la démo
La plage d'
-838:59:59
838:59:59
exemples MySQL du résultat est limitée à celle du type de données TIME, qui va de à :Voir: SEC_TO_TIME
Exécutez la démo
Exemple PostgreSQL:
Exécutez la démo
la source
D'autres solutions utilisent
gmdate
, mais échouent dans les cas limites où vous disposez de plus de 86400 secondes. Pour contourner cela, nous pouvons simplement calculer le nombre d'heures nous-mêmes, puis laissergmdate
calculer les secondes restantes en minutes / secondes.Entrée:
6030
Sortie:1:40:30
Entrée:
2000006030
Sortie:555557:13:50
la source
la source
Ne donnera pas l'heure au
H:i:s
format si elleno_of_seconds
est supérieure à 1 jour (secondes dans une journée).Il négligera la valeur journalière et ne donnera que
Hour:Min:Seconds
Par exemple:
la source
Voici une doublure qui gère les secondes négatives et plus de 1 jour de secondes.
Par exemple:
sorties: -26: 03: 04
la source
Si vous n'aimez pas les réponses acceptées ou les réponses populaires, essayez celle-ci
la source
écrire une fonction comme celle-ci pour retourner un tableau
puis appelez simplement la fonction comme ceci:
la sortie est
la source
Voir:
De: convertir les secondes en jours, heures, minutes et secondes
la source
Essaye ça:
Tiré de
http://bytes.com/topic/php/answers/3917-seconds-converted-hh-mm-ss
la source
La fonction gmtdate () n'a pas fonctionné pour moi car je suivais les heures travaillées sur un projet et si c'est plus de 24 heures, vous obtenez le montant restant après 24 heures est soustrait. En d'autres termes, 37 heures deviennent 13 heures. (tout comme indiqué ci-dessus par Glavic - merci pour vos exemples!) Celui-ci a bien fonctionné:
la source
Cette fonction peut être utile, vous pouvez l'étendre:
la source
Solution de: https://gist.github.com/SteveJobzniak/c91a8e2426bac5cb9b0cbc1bdbc45e4b
Voici une méthode très propre et courte!
Ce code évite autant que possible les appels de fonctions fastidieux et la construction de chaînes pièce par pièce, et les fonctions importantes et encombrantes que les gens font pour cela.
Il produit le format "1h05m00s" et utilise des zéros non significatifs pendant les minutes et les secondes, tant qu'un autre composant temporel non nul les précède.
Et il saute tous les principaux composants vides pour éviter de vous donner des informations inutiles comme "0h00m01s" (à la place, cela apparaîtra comme "1s").
Exemples de résultats: "1s", "1m00s", "19m08s", "1h00m00s", "4h08m39s".
Si vous souhaitez rendre le code encore plus court (mais moins lisible), vous pouvez éviter le
$converted
tableau et placer les valeurs directement dans l'appel sprintf (), comme suit:La durée doit être égale ou supérieure à 0 dans les deux éléments de code ci-dessus. Les durées négatives ne sont pas prises en charge. Mais vous pouvez gérer des durées négatives en utilisant à la place le code alternatif suivant:
la source
gmdate()
hack est encore plus court que cela, mais ne prend en charge que des durées allant jusqu'à 24 heures. Tout ce qui dépasse 24 heures échouera si vous utilisez l'astuce gmdate!Un moyen simple d'utiliser DateTime pour cela est:
C'est une solution simple qui vous donne la possibilité d'utiliser la méthode de format de DateTime.
la source
En java, vous pouvez utiliser cette méthode.
la source
la source
Eh bien, j'avais besoin de quelque chose qui réduirait les secondes en heures minutes et secondes, mais dépasserait 24 heures, et ne se réduirait pas davantage en jours.
Voici une fonction simple qui fonctionne. Vous pouvez probablement l'améliorer ... Mais le voici:
la source
Pour le convertir en fonction:
la source
Si vous devez le faire en javascript, vous pouvez le faire en une seule ligne de code comme indiqué ici Convertissez les secondes en HH-MM-SS avec JavaScript . Remplacez SECONDES par ce que vous souhaitez convertir.
la source
Si vous souhaitez créer une chaîne de durée audio / vidéo comme YouTube, etc., vous pouvez faire:
($seconds >= 60) ? ltrim(gmdate("H:i:s", $seconds), ":0") : gmdate("0:s", $seconds)
Renvoie des chaînes comme:
Ne fonctionnera probablement pas bien pendant un temps> = 24 heures.
la source
C'est une jolie façon de le faire:
la source
Juste au cas où quelqu'un d'autre chercherait une fonction simple pour renvoyer ce format bien (je sais que ce n'est pas le format demandé par l'OP), c'est ce que je viens de trouver. Merci à @mughal pour le code sur lequel il était basé.
la source
Quiconque cherche cela à l'avenir, cela donne le format demandé par l'affiche initiale.
la source
la source