JavaScript的%[flag] [width]等效项(C和Java格式说明符)

问题描述 投票:1回答:1

我想这样保留空白:[[1小时2 m 3 s][[11 h 22 m 33 s]我希望'h','m'和's'每次更新值时都保持在同一位置(在我的代码中,我以1s为间隔)。在这种情况下,我希望它保留2个字符长的数值。这是我的问题:[[1 h 2 m 3 s](问题)其宽度随着总字符的变化而变化。[[1小时2 m 3 s](我希望的样子)

在C中,在这种情况下,我可以使用以下方法轻松解决问题:

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

与JavaScript不同,我在互联网上找不到解决方案。顺便说一句,这是我的代码:

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);
javascript html css string-formatting format-specifiers
1个回答
0
投票

从评论中收到一些提示后,我想到的最终解决方案是:

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);
© www.soinside.com 2019 - 2024. All rights reserved.