如果持续时间为24小时,则Moment.js返回2天

时间:2018-12-12 08:01:34

标签: javascript angularjs date momentjs

我需要具有一个功能,用户可以在其中插入特定的时间范围(例如1周或5天零12个小时)。 Moment.js的持续时间看上去最有希望。

下面的代码返回2 00:00,其中2等于天数。应该是1,因为那里只有24小时。

moment.utc(moment.duration(24, 'hours').as("milliseconds")).format("D HH:mm");

我在这里做什么错了?

4 个答案:

答案 0 :(得分:2)

您通过调用moment.utc(...)将24小时设置为从1970-01-01(Unix纪元)开始的毫秒偏移量。这意味着您现在正在保存日期1970-01-02 00:00,然后再打印日期部分。

答案 1 :(得分:0)

如果时间范围是固定的并由您自己设置,则始终可以手动输入开始的时间(以毫秒为单位)。例如24小时为86400000毫秒。

答案 2 :(得分:0)

您必须以瞬间持续时间的格式设置毫秒,而不是瞬间的格式。我认为下面的行给出了您的期望值。

 moment.duration(moment.duration(24, 'hours').as("milliseconds")).format("D HH:mm");

答案:1 00:00

答案 3 :(得分:0)

我使用以下代码和插件对其进行了修复:

moment.duration(moment().diff(moment().subtract(1, 'days')));