Consiglio esercizio Javascript

Shir0ni

Nuovo Utente
15 Lug 2020
1
0
1
Ciao a tutti, sto da poco iniziando a imparare a programmare con Javascript e mi sono imbattuto in questo esercizio: devo creare un programma che converte i secondi totali nel formato Ore / minuti / secondi e ho scritto questo (ho usato 3661 secondi in quanto sarebbero esattamente 1 ora, 1 minuto e 1 secondo):

Codice:
var secondi = 3661;
var minuti = Math.round(secondi / 60);
var ore = Math.floor(minuti / 60);
var secondiRestanti = secondi % 60;

console.log(`I secondi totali sono ${secondi} e sono pari a ${ore} ore, ${minuti} minuti e ${secondiRestanti} secondi.`);
Il problema è che l'Output mi dà 1 Ora / 61 Minuti / 1 Secondo. Cosa ho sbagliato nel codice? Come faccio a fare in modo che, scattati i 60 minuti, si azzerino?
Grazie mille
 

Tommy03

Utente Attivo
6 Giu 2018
486
49
28
17
Bassano del Grappa (VI)
Ciao, io ti consiglierei come strategia di calcolare innanzitutto il numero di ore facendo il totale dei secondi /3600 (poi con floor prendi la parte intera), poi fai totale secondi in modulo 3600 (nel tuo esempio trovi 61, cioè il numero di secondi nei minuti) e poi fai lo stesso procedimento per calcolare i minuti (floor(61/60), poi fai in modulo 60 per trovare i secondi)
 

ninja72

Utente Attivo
15 Giu 2020
24
4
3
Codice:
"use strict";

let toTime = (totSecs) => {
    let totSecondi = totSecs;
    let ore = Math.floor(totSecondi / 3600);
    let minuti = Math.floor(totSecondi % 3600 / 60);
    let secondi = Math.floor(totSecondi % 3600 % 60);

    return `I secondi totali sono ${totSecondi} e sono pari a ${ore} ore, ${minuti} minuti e ${secondi} secondi.`;
}

console.log(toTime(3659));