JavaScript эквивалент% [флаг] [ширина] (C & Java спецификатор формата) - PullRequest
1 голос
/ 01 мая 2020

Я хочу сохранить пустое пространство следующим образом:
[1 ч 2 м 3 с]
[11 ч 22 м 33 с]

Я хочу, чтобы 'h', 'm' и 's' оставались в одной и той же позиции каждый раз, когда они обновляют свое значение (в моем коде я поставил интервал 1 с).
В этом случае я хочу, чтобы сохранить значение 2 символа для числового значения c.

И вот моя проблема:
[1 ч 2 м 3 с] (проблема)
Изменения его ширины так как общий символ меняется.
[1 ч 2 м 3 с] (так, как я хотел, чтобы это было)

В C, в данном случае, Я легко могу решить проблему, используя:

printf("%2d h %2d m %2d s", h, m, s);

В отличие от JavaScript, я не нашел решения этой проблемы на inte rnet.
Кстати, вот мой код:

var s = 0;
setInterval(() => {
    timer.innerHTML = s < 60 ? (s % 60) + ' s' :
        s < 3600 ? Math.floor(s / 60) % 60 + ' m ' + (s % 60) + ' s' :
        Math.floor(s / 3600) + ' h ' + Math.floor(s / 60) % 60 + ' m ' + (s % 60) + ' s';
    s++;
}, 1000);

1 Ответ

0 голосов
/ 02 мая 2020

Окончательное решение, которое я придумал после получения нескольких советов из комментариев:

var s = 0;
setInterval(() => {
    let sec = (s % 60).toString().padStart(2);
    let min = (Math.floor(s / 60) % 60).toString().padStart(2);
    let hour = Math.floor(s / 3600).toString().padStart(2);
    timer.innerHTML =   s < 60 ? `${sec}s` :
                        s < 3600 ? `${min}m ${sec}s` :
                        `${hour}h ${min}m ${sec}s`;
    s++;
}, 1000);
...