在 30 秒和地板上舍入分钟

Rounding Up Minute at 30 Seconds and Flooring

我有一个看起来像这样的时间值:totalDuration: 00:22:53。我想要做的是在 seconds >= 30 时将此值的秒数四舍五入,以便将其四舍五入到下一分钟并将秒数归零。

换句话说,我的 00:22:53 示例最终应该是 00:23:00

为此我尝试了这个:

const timeRoundedUp = moment(totalDuration).add(1, 'm').startOf('minute');

但这给了我一个 null 结果。

我也试过这个:

const roundedUp = moment(totalDuration).add(1, 'minutes');

但这也给了我一个 null 结果。

也许问题是我输入到函数中的值的格式?我怎样才能做到这一点?

您必须在初始化正确的对象时指定持续时间的格式

let totalDuration = '00:22:53'
const m = moment(totalDuration, "hh:mm:ss");

// conditionally round the seconds
const roundUp = m.second() >= 30 ? m.add(1, 'minute').startOf('minute') : m.startOf('minute')

console.log(roundUp.format("HH:mm:ss"));