【发布时间】:2017-11-14 16:01:59
【问题描述】:
我一直在使用 moment.js 库计算两次之间的总小时、分钟和秒。我遇到的问题是计算没有认识到这是一天并且返回的时间比那里的时间多。我给你举个例子:
我想知道21:00和06:00之间的时间是多少小时,答案是9,但是计算出来的是-15,这在技术上也是正确的。我需要告诉 moment 它应该用一天来计算这个值。如果我使用 DateTime 选择器,我可以让它工作,但我不想使用它,因为用户只需要提供一个时间。
我的应用程序将 KendoUI 用于 MVC 和 moment.js、moment.duration.format.js 和 moment.range.js
这是我的代码,它将返回 -15
@(Html.Kendo().TimePicker().Name("start").Value("21:00"))
@(Html.Kendo().TimePicker().Name("end").Value("06:00"))
<button class="btn btn-default btn-success" onclick="calc()">Plot</button>
这是适用于此的 javascript。
function calc() {
window['moment-range'].extendMoment(moment);
console.clear();
var dformat = "HH:mm:ss";
var start = $("#start").data("kendoTimePicker").value();
var end = $("#end").data("kendoTimePicker").value();
var startTime = moment(kendo.toString(start));
var endTime = moment(kendo.toString(end));
var duration = moment.duration(endTime.diff(startTime));
var hours = parseInt(duration.asHours());
console.log(hours);
}
如果我们将其改为使用DateTimePicker,它会知道有一天并计算9 小时。那么我该如何解决呢?在不使用日期时间选择器的情况下如何实现这一点?我可以离开moment.jsstartof day 什么的吗?
【问题讨论】:
-
参见here,您正在获取当天的时刻对象,请使用
isBefore和add。
标签: javascript datetime momentjs