Преобразуйте количество дней в годы-месяцы-дни в JavaScript

1

Привет, я искал какое-то время, и я не могу найти ответ на этот вопрос.

Я должен закодировать функцию в javascript, которая принимает число дней в параметре, а затем преобразует ее в более понятную строку.

Пример:

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

Так getFormatedStringFromDays(183) возвращает что-то вроде 6 months 3 days.

Теги:
date

2 ответа

1
Лучший ответ

Предполагая, что этот год содержит 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; 
}

Не самое изящное решение, но оно должно работать

  • 0
    Привет @Sergey Mell спасибо за быстрый ответ. Я попробовал код, и у меня есть ошибка в консоли, говорящая, что h не определено.
  • 1
    @ Helpha Вы уверены, что проверили последнюю версию? Я отредактировал это пару раз. Последняя версия работает - я проверил это
Показать ещё 1 комментарий
1

Чистый js:

function getFormatedStringFromDays(days) {
  days = +days;
  if(Number.isInteger(+days)){
    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 months + mon_text + days + day_text;
  } else {
    return 'not a number';
  }
}

console.log(getFormatedStringFromDays(1));
console.log(getFormatedStringFromDays(35));
console.log(getFormatedStringFromDays(183));
console.log(getFormatedStringFromDays('abc'));
console.log(getFormatedStringFromDays('123'));
  • 0
    Это прекрасно работает, спасибо!
  • 1
    @Helpha Круто. Я также добавил валидацию для числа на случай, если ввод похож на abc

Ещё вопросы

Сообщество Overcoder
Наверх
Меню