【问题标题】:How to subtract 10 seconds from a specific given timestamp JS如何从特定给定的时间戳 JS 中减去 10 秒
【发布时间】:2021-11-27 21:30:45
【问题描述】:

时间到了:

01:02:25,369

我想从中减去 10 秒,所以返回值应该是:

01:02:15,369

我知道我必须编写一个函数来做到这一点,但是当秒小于 10 时事情会变得很困难,所以你还必须减去分钟和小时。

【问题讨论】:

  • 将其转换为日期并减去 1e4 毫秒
  • 如何将其转换为日期?它是一个字符串,我不知道。我得到了 NaN

标签: javascript function


【解决方案1】:

您可以将其转换为毫秒,然后根据需要添加或减去。如果需要的话,然后做一个渲染函数将它转换回字符串。

function getTotalMS(timeString) {
    const [hms, ms] = timeString.split(',');
    const [h, m, s] = hms.split(':');

    return parseInt(ms) * 1 +
           parseInt(s) * 1000 +
           parseInt(m) * 60 * 1000 +
           parseInt(h) * 60 * 60 * 1000;
}

function renderTime(ms) {
    const h = Math.floor(ms / (60 * 60 * 1000)); ms -= h * 60 * 60 * 1000;
    const m = Math.floor(ms / (60 * 1000)); ms -= m * 60 * 1000;
    const s = Math.floor(ms / (1000)); ms -= s * 1000;

    return `${h<10?'0':''}${h}:${m<10?'0':''}${m}:${s<10?'0':''}${s},${ms}`;
}


// subtracting 10 seconds
let totalTime = getTotalMS('01:02:25,369');
totalTime -= 10 * 1000;
console.log(renderTime(totalTime));

可能可以优化,但这是一个起点

【讨论】:

    【解决方案2】:

    把它变成Date,然后减去10000(不要重新发明轮子)

    【讨论】:

    • 如何将其转换为日期?它是一个字符串,我不知道。我得到 NaN
    • @Puyo 您引用的示例使用momentjs,它很重且过时
    • @skara9 我没有链接具体答案,只是链接了问题:p
    猜你喜欢
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2015-12-22
    相关资源
    最近更新 更多