Retour au blog
juin 2018·1 min de lectureTraduit par IA
Langue:DeutschEnglishFrançaisÖsterreichischKlingonian Version originale: Deutsch

Convertir des secondes en jours, heures, minutes et secondes

#basetime#javascript#time#zeit

Sur un projet en cours, sur lequel j'étais assis ce matin, j'ai eu un peu mal à la tête pour convertir une valeur en secondes en jours, heures, minutes et secondes. C'est en fait simple, mais j'avais un trou. Si vous êtes dans le même cas et face à un problème similaire, voici une solution. Par exemple, nous voulons déclencher un événement au bout de 500 secondes.

var basetime = 500;

Cela ferait alors 0 jour, 0 heure, 8 minutes, 20 secondes. On peut le calculer ainsi :

var tage = Math.floor(basetime / 86400);
var stunden = Math.floor((basetime % 86400) / 3600);
var minuten = Math.floor((basetime % 3600) / 60);
var sekunden = Math.floor(basetime % 60);

Math.floor arrondit chaque résultat à l'entier naturel inférieur. Pour le nombre de jours, on divise donc simplement la variable basetime (= le nombre de secondes à convertir) par 86400 (= 60 secondes 60 minutes 24 heures = 1 jour) et l'on arrondit à l'entier inférieur. Le reste de cette division (modulo) correspond alors aux secondes qui restent et n'ont pas pu être « rangées » dans un jour ; divisé par 3600 (une heure), il correspond au nombre d'heures restantes. On arrondit de nouveau à l'inférieur, car on veut « compléter » avec des minutes. En divisant le nombre de secondes par 3600, on obtient le nombre d'heures qui tiennent dans la valeur en secondes. Divisé par 60, ce reste donne le nombre de minutes restantes. On arrondit à l'inférieur, car on veut compléter avec des secondes. Enfin, on prend le modulo du nombre de secondes par 60 pour obtenir le nombre de secondes qui tient dans la valeur en secondes transmise. On arrondit, et nous avons le temps en secondes.

Si l'on résout cela avec des chiffres, le résultat ressemble à ceci :

var basetime = 500;
var tage = Math.floor(500 / 86400); // 500 / 86400 = 0,005787037037037 = Abgerundet 0
var stunden = Math.floor((500 % 86400) / 3600); // 500 % 86400 = 500 / 3600 = 0,138888888888889 = Abgerundet 0
var minuten = Math.floor((basetime % 3600) / 60); // 500 % 3600 = 500 / 60 = 8 = Abgerundet 8
var sekunden = Math.floor(basetime % 60); // 500 % 60 = 20 = Abgerundet 20
Plus récentSimple Template EnginePlus ancienTimemachine -5058