在 JavaScript 中转换以年-月-日为单位的天数



嗨,我已经搜索了一段时间,但我似乎找不到答案。

我必须用javascript编写一个函数,该函数在参数中需要天数,然后将其转换为更易于理解的字符串。

前任:

function getFormatedStringFromDays(days)
{
var formatedString = "";
//... logic
return formatedString;
}

所以getFormatedStringFromDays(183)返回类似 6 months 3 days .

假设年份包含 365 天和月-30 天,答案可能如下所示。否则应该有更多的输入参数

function getFormatedStringFromDays(numberOfDays) {
    var years = Math.floor(numberOfDays / 365);
    var months = Math.floor(numberOfDays % 365 / 30);
    var days = Math.floor(numberOfDays % 365 % 30);
    var yearsDisplay = years > 0 ? years + (years == 1 ? " year, " : " years, ") : "";
    var monthsDisplay = months > 0 ? months + (months == 1 ? " month, " : " months, ") : "";
    var daysDisplay = days > 0 ? days + (days == 1 ? " day" : " days") : "";
    return yearsDisplay + monthsDisplay + daysDisplay; 
}

不是最优雅的解决方案,但它应该有效

Pure js:

function getFormatedStringFromDays(days) {
  days = +days;
  if(Number.isInteger(+days)){
var years = Math.floor(days / 365);
    var year_text = years === 1 ? ' year ' : ' years ';
    days %= 365;
    var months = Math.floor(days / 30);
    var mon_text = months <= 1 ? ' month ' : ' months ';
    var days = days % 30;
    var day_text = days <= 1 ? ' day' : ' days';
    return years + year_text + months + mon_text + days + day_text;
  } else {
    return 'not a number';
  }
}
console.log(getFormatedStringFromDays(1));
console.log(getFormatedStringFromDays(35));
console.log(getFormatedStringFromDays(383));
console.log(getFormatedStringFromDays('abc'));
console.log(getFormatedStringFromDays('11123'));

最新更新