yarkov
@yarkov
Помог ответ? Отметь решением.

Как бы вы форматировали такую строку?

Есть плагин moment-countdown.
Вызывая вот так:
console.log(moment().countdown(Date.parse('June 26, 2020 12:00')).toString())

видим такую строку:
2 years, 11 months, 28 days, 18 hours, 56 minutes and 24 seconds

Надо как-то приводить строку к виду:
  1. Если есть годы, то вернуть только годы
  2. Если есть месяцы, то вернуть только месяцы
  3. Если есть дни, то вернуть только дни
  4. Если есть часы, то вернуть ЧЧ:ММ
  5. Если есть минуты, то вернуть ММ:СС
  6. Если есть секунды, то вернуть 00:СС

Напрашивается только регулярка с вложенными шаблонами и длинный switch или if/else.
Может есть путь короче?
  • Вопрос задан
  • 186 просмотров
Решения вопроса 1
yarkov
@yarkov Автор вопроса, куратор тега JavaScript
Помог ответ? Отметь решением.
let template = '00:00'
let sign = 'remaining'
const result = '2 years, 11 months, 28 days, 18 hours, 56 minutes and 24 seconds'
const match = result.match(/([0-9]+)/g) || []

console.log(match)

switch (match.length) {
    case 6:
        template = match[0]
        sign = `years ${sign}`
        break
    case 5:
        template = match[0]
        sign = `months ${sign}`
        break
    case 4:
        template = match[0]
        sign = `days ${sign}`
        break
    case 3:
        template = `${match[0]}:${match[1]}`
        sign = `hours ${sign}`
        break
    case 2:
        template = `${match[0]}:${match[1]}`
        sign = `minutes ${sign}`
        break
    case 1:
        template = `00:${match[0]}`
        sign = `seconds ${sign}`
        break
    default:
        template = '00:00'
        sign = 'time complited'
        break
}

console.log(template, sign)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
IonDen
@IonDen
JavaScript developer. IonDen.com
Нет, у вас своеобразные условия, пишите набор правил.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы