将分钟转换成日、周、月和年
Converts minutes into days, week, months and years
假设我有一个数字,表示从开始时间到现在经过的分钟数。
我想创建一个函数,该函数返回与我传递给该函数的分钟相对应的年、月、周和日。
下面是一个例子:
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
}
达到这个结果的最好方法是什么?
也许像这样?
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]
}
基于上面thg435的响应,我创建了一个将秒转换为天、小时、分钟和秒的函数:
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;
}
我还在结果中添加了一些空格,给逗号一些空间。输出如下所示:
1 day, 3 hours, 52 minutes, 7 seconds.
我是这样做的,因为我甚至不知道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
}
你需要使用除法和模数:
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
}
嘿,我已经实现了一些代码,将一些工作的人
const MINS_PER_YEAR = 24 * 365 * 60,
MINS_PER_MONTH = 24 * 30 * 60,
MINS_PER_WEEK = 24 * 7 * 60,
MINS_PER_DAY = 24 * 60;
const hours = (minutes) => {
const hour = Math.floor(minutes / 60);
const remainingMinutes = minutes - hour * 60;
return `${hour} hours ${remainingMinutes} minutes`;
};
const days = (minutes) => {
const days = Math.floor(minutes / (24 * 60));
const remainingMinutes = minutes - days * 24 * 60;
const hour = hours(remainingMinutes);
return `${days} days ${hour}`;
};
const weeks = (minutes) => {
const weeks = Math.floor(minutes / (24 * 7 * 60));
const remainingMinutes = minutes - weeks * (24 * 7 * 60);
if (remainingMinutes <= MINS_PER_DAY) return `${weeks} weeks ${hours(remainingMinutes)}`;
else return `${weeks} weeks ${days(remainingMinutes)}`;
};
const months = (minutes) => {
const months = Math.floor(minutes / MINS_PER_MONTH);
const remainingMinutes = minutes - months * MINS_PER_MONTH;
if (remainingMinutes <= 60) return `${months} months ${hours(remainingMinutes)}`;
else if (remainingMinutes <= MINS_PER_DAY) return `${months} months ${days(remainingMinutes)}`;
else return `${months} months ${weeks(remainingMinutes)}`;
};
export const convertMinutes = (minutes) => {
if (minutes <= 60) return `${minutes} minutes`;
else if (minutes <= MINS_PER_DAY) return hours(minutes);
else if (minutes <= MINS_PER_WEEK) return days(minutes);
else if (minutes <= MINS_PER_MONTH) return weeks(minutes);
else return months(minutes);
};
相关文章:
- 如何在javascript中将秒转换为分钟和小时
- 如何使用javascript将秒转换为分钟.
- 当转换为Python日期时间时,Node的时间戳落后3分钟
- 将音频第二次转换为分钟和秒格式
- 将秒实时转换为小时和分钟
- 用javascript将pubDate转换为x分钟前
- 将秒转换为天,小时,分钟和秒
- 如何使用 矩.js 将分钟转换为小时
- 当文本框失去焦点时,将给定字符串转换为分钟
- 时差并在javascript中转换为小时和分钟
- 在 JavaScript 中将 Unix 时间转换为“几分钟前”
- 如何将毫秒转换为分钟
- 将小时转换为60分钟的正确除法
- 谷歌地图目录api将小时转换为分钟
- 用javascript将时间转换为分钟
- 日期转换为天、小时、分钟格式
- 转换具有属性值的对象的更快方法是什么:;HH:MM:SS”;以串“;N分钟”;
- 将分钟转换为秒
- 将分钟转换成日、周、月和年
- 如何用moment.js将小时和分钟转换为分钟