当剩下零小时时,Moment JS Subtract方法返回12小时差异

时间:2015-11-30 12:11:00

标签: javascript momentjs

我希望借助moment js显示当前时间到特定预设时间(01:00 PM)的剩余小时数,分钟数和秒数。 我使用以下代码,

var n = new Date();
var end = new Date(n.getFullYear(), n.getMonth(), n.getDate(), 13, 0, 0, 0);
var a = moment(end);
var b = moment(n);
var eta = a.subtract(b).toDate().toLocaleTimeString();

在剩余时间大于零之前,它可以正常工作。例如,每当时间到达下午12:10时,它应该显示0小时和剩余40分钟,而不是显示12小时40分钟。

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

你不能使用toLocaleTimeString(),因为它显示了日期的时间,因此,正如Trunst在评论中所说,如果是12小时格式,它将显示12而不是0。

您可以使用momentjs的{​​{3}}功能将其强制为24小时格式:

var eta = a.subtract(b).format("H:mm:ss");

选中显示ETA倒计时的format()

请注意使用demo there代替substract,请参阅Matt Johnson对解释的评论。

请注意,如果要显示超过24小时的ETA,则必须使用momentjs的{​​{3}}。