Neo
Neo

Reputation: 135

How to convert milliseconds into Days/hours/minutes

I am calculating the hours,minutes using the milliseconds. Below is mycode

function getDuration(milli){
  let minutes = Math.floor(milli / 60000);
  let hours = Math.round(minutes / 60);
}

I want to display the user the time as 'Days' if hours > 24 , 'minutes' if minute < 60. How can i implement it in template string in the following format

setHtml('Duration', `${getDuration(user[0].milli_seconds)} <span id="days">Hours</span> <span>Minutes</span>`);

Upvotes: 0

Views: 10100

Answers (2)

Lain
Lain

Reputation: 3726

You could return it as an object which returns days, hours or minutes depending on what is there.

function getDuration(milli){
  let minutes = Math.floor(milli / 60000);
  let hours = Math.round(minutes / 60);
  let days = Math.round(hours / 24);

  return (
    (days && {value: days, unit: 'days'}) ||
    (hours && {value: hours, unit: 'hours'}) ||
    {value: minutes, unit: 'minutes'}
  )
};

var tDuration = getDuration(23456576210);

console.log(tDuration.value + ': ' + tDuration.unit);

Original version:

function getDuration(milli){
  let minutes = Math.floor(milli / 60000);
  let hours = Math.round(minutes / 60);
  let days = Math.round(hours / 24);

  return (
    (days && {days: days}) ||
    (hours && {hours: hours}) ||
    {minutes: minutes}
  )
};

var tDuration = getDuration(23456576210);

console.log(tDuration);

Upvotes: 2

sridhar..
sridhar..

Reputation: 2133

Calculate days first , then hours and minutes

function convertToDays(milliSeconds){
let days = Math.floor(milliSeconds/(86400 * 1000));
milliSeconds -= days*(86400*1000);
let hours = Math.floor(milliSeconds/(60 * 60 * 1000 ));
milliSeconds -= hours * (60 * 60 * 1000);
let minutes = Math.floor(milliSeconds/(60 * 1000));
return {
  days,hours,minutes
} 
  
}

console.log(convertToDays(8640000));

Upvotes: 2

Related Questions