Converts minutes to days, week, months, and years

Suppose I have a number that represents the minutes elapsed from launch to the present.

I wanted to create a function that returns the years, months, week, and days that correspond to the protocols that I pass to this function.

Here is an example:

var minutes = 635052; // 635052 = (24*60)*365 + (24*60)*30*2 + (24*60)*14 + (24*60)*2 + 12; getDataHR(minutes); // 1 year, 2 months, 2 week, 2 days, 12 minutes function getDataHR (newMinutes) { minutes = newMinutes; ....... return hrData; // 1 year, 2 months, 2 week, 2 days, 12 minutes } 

What is the best way to achieve a result?

+7
source share
4 answers

Maybe so?

 var units = { "year": 24*60*365, "month": 24*60*30, "week": 24*60*7, "day": 24*60, "minute": 1 } var result = [] for(var name in units) { var p = Math.floor(value/units[name]); if(p == 1) result.push(p + " " + name); if(p >= 2) result.push(p + " " + name + "s"); value %= units[name] } 
+11
source

Having created the answer thg435 above , I created a function that converts seconds to days, hours, minutes, and seconds:

 function secondsToString(seconds) { var value = seconds; var units = { "day": 24*60*60, "hour": 60*60, "minute": 60, "second": 1 } var result = [] for(var name in units) { var p = Math.floor(value/units[name]); if(p == 1) result.push(" " + p + " " + name); if(p >= 2) result.push(" " + p + " " + name + "s"); value %= units[name] } return result; } 

I also added some spaces to the result to give the commas some room. The result is as follows:

 1 day, 3 hours, 52 minutes, 7 seconds. 
+6
source

I did it like this because I didnโ€™t even know that there is a modulo operator in javascript:

 var minutes = 635052; // 635052 = (24*60)*365 + (24*60)*30*2 + (24*60)*14 + (24*60)*2 + 12; getDataHR(minutes); // 1 year, 2 months, 2 week, 2 days, 12 minutes function getDataHR (newMinutes) { MINS_PER_YEAR = 24 * 365 * 60 MINS_PER_MONTH = 24 * 30 * 60 MINS_PER_WEEK = 24 * 7 * 60 MINS_PER_DAY = 24 * 60 minutes = newMinutes; years = Math.floor(minutes / MINS_PER_YEAR) minutes = minutes - years * MINS_PER_YEAR months = Math.floor(minutes / MINS_PER_MONTH) minutes = minutes - months * MINS_PER_MONTH weeks = Math.floor(minutes / MINS_PER_WEEK) minutes = minutes - weeks * MINS_PER_WEEK days = Math.floor(minutes / MINS_PER_DAY) minutes = minutes - days * MINS_PER_DAY return years + " year(s) " + months + " month(s) " + weeks + " week(s) " + days + " day(s) " + minutes + " minute(s)" //return hrData; // 1 year, 2 months, 2 week, 2 days, 12 minutes } 
+5
source

You need to use division and module:

 function getDataHR (newMinutes) { var hrData = ""; var years = minutes / YEAR_IN_MINUTES; // int division = no remainder hrData += years + "years"; minutes = minutes % YEAR_IN_MINUTES; // ... continue for months, weeks, days, hours, etc. in that order return hrData; // 1 year, 2 months, 2 week, 2 days, 12 minutes } 
+4
source

All Articles