Moment JS 减法 returns 只剩零小时时相差12小时
Moment JS Subtract method returns 12 hour difference when there is only zero hour left
我想在 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 PM 时,它应该显示剩余 0 小时 40 分钟,而不是显示剩余 12 小时 40 分钟。
如何解决这个问题?
您不能使用 toLocaleTimeString()
,因为它显示日期的时间,因此,正如 Trunst 在他的评论中所说,在 12 小时格式的情况下,它将显示 12 而不是 0。
您可以使用momentjs
的format()
函数强制为24小时格式:
var eta = a.subtract(b).format("H:mm:ss");
检查 demo there,其中显示了预计到达时间的倒计时
请注意使用 diff
而不是 substract
,请参阅 Matt Johnson 的评论以获得解释。
请注意,如果您想显示大于 24 小时的预计到达时间,则必须使用 momentjs
的 duration object。
我想在 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 PM 时,它应该显示剩余 0 小时 40 分钟,而不是显示剩余 12 小时 40 分钟。
如何解决这个问题?
您不能使用 toLocaleTimeString()
,因为它显示日期的时间,因此,正如 Trunst 在他的评论中所说,在 12 小时格式的情况下,它将显示 12 而不是 0。
您可以使用momentjs
的format()
函数强制为24小时格式:
var eta = a.subtract(b).format("H:mm:ss");
检查 demo there,其中显示了预计到达时间的倒计时
请注意使用 diff
而不是 substract
,请参阅 Matt Johnson 的评论以获得解释。
请注意,如果您想显示大于 24 小时的预计到达时间,则必须使用 momentjs
的 duration object。