Javascript 当只剩下0小时时,矩JS减法返回12小时差

Javascript 当只剩下0小时时,矩JS减法返回12小时差,javascript,momentjs,Javascript,Momentjs,我想在的帮助下显示从当前时间到特定预设时间(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(); 它可以正

我想在的帮助下显示从当前时间到特定预设时间(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分钟


如何修复此问题?

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

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

var eta = a.subtract(b).format("H:mm:ss");
勾选显示预计到达时间倒计时的

请注意使用而不是
减法,有关解释,请参见Matt Johnson的评论



请注意,如果要显示大于24小时的ETA,则必须使用
momentjs

的函数。在我看来,问题似乎是
toLocaleTimeString()
将时间格式化为12小时约定,而在12小时约定中,0被解释为凌晨12点。抱歉,这不是一个好方法
subtract
用于从一个力矩对象中删除一些经过的时间,以获得一个较早的力矩对象。获取两个力矩之间差值的正确函数是
diff
。请参阅我标记为重复的问题以及关于如何设置输出格式的公认答案。感谢所有有价值的信息Hanks@MattJohnson,我编辑了我的示例以反映您的评论。