# JavaScript that displays how many months weeks days hours minutes minutes have in x hours

3

I'm trying to put together a script that transforms a quantity x of hours into months weeks days hours minutes minutes

I have a problem with all scripts that I find return by ex and you have 1 week it returns 1 week 7 days x hours and so on.

It would have to round or approach. if it's hard only the days are good

The script I'm trying to use is more or less this

``````function calcula(){
/ Set the unit values in milliseconds.
var msecPerMinute = 1000 * 60;
var msecPerHour = msecPerMinute * 60;
var msecPerDay = msecPerHour * 24;

// Set a date and get the milliseconds
var date = new Date('6/15/1990');
var dateMsec = date.getTime();

// Set the date to January 1, at midnight, of the specified year.
date.setMonth(0);
date.setDate(1);
date.setHours(0, 0, 0, 0);

// Get the difference in milliseconds.
var interval = dateMsec - date.getTime();

// Calculate how many days the interval contains. Subtract that
// many days from the interval to determine the remainder.
var days = Math.floor(interval / msecPerDay );
interval = interval - (days * msecPerDay );

// Calculate the hours, minutes, and seconds.
var hours = Math.floor(interval / msecPerHour );
interval = interval - (hours * msecPerHour );

var minutes = Math.floor(interval / msecPerMinute );
interval = interval - (minutes * msecPerMinute );

var seconds = Math.floor(interval / 1000 );

// Display the result.
document.write(days + " days, " + hours + " hours, " + minutes + " minutes, " + seconds + " seconds.");

//Output: 164 days, 23 hours, 0 minutes, 0 seconds.

}
``````

This script uses one date to compare to another and this is not what I need because my system returns an x number of minutes.

asked by anonymous 20.12.2016 / 03:57

4

``````function calcula(valorInicio){
//primeiro criei constantes para armazenar os valores dos tempos em MINUTOS. altere eles de acordo com sua necessidade
const minutos = 1;
const horas = 60; //minuto * 60
const dias = 1440; //hora * 24
const semanas = 10080; //dias * 7
const meses = 302400; //semanas * 4
const anos = 3628800; //meses * 12

if (valorInicio > anos){//verifica se é maior que um ano
var ano = Math.floor(valorInicio / anos); //cria a variável ano e armazena a quantidade de anos nela
valorInicio = valorInicio - (anos * ano); //atualiza o valorInicio
}else{
var ano = 0; //se for menor que um ano, cria a variável ano e deixa zerada
}

//faz o mesmo para os meses
if (valorInicio > meses){
var mes = Math.floor(valorInicio / meses);
valorInicio = valorInicio - (meses * mes);
}else{
var mes = 0;
}

//faz o mesmo para as semanas
if (valorInicio > semanas){
var semana = Math.floor(valorInicio / semanas);
valorInicio = valorInicio - (semanas * semana);
}else{
var semana = 0;
}

//faz o mesmo para os dias
if (valorInicio > dias){
var dia = Math.floor(valorInicio / dias);
valorInicio = valorInicio - (dias * dia);
}else{
var dia = 0;
}

//faz o mesmo para os horas
if (valorInicio > horas){
var hora = Math.floor(valorInicio / horas);
valorInicio = valorInicio - (horas * hora);
}else{
var hora = 0;
}

var minuto = valorInicio; //o que sobra são minutos
alert('Anos: '+ano+' - Meses: '+mes+' - Semanas: '+semana+' - Dias: '+dia+' - Horas: '+hora+' - Minuto: '+minuto);