javascript - 寻找使用 Javascript 从 Kendo UI timepickers 中减去时间的更好替代方法

标签 javascript jquery asp.net-mvc razor kendo-asp.net-mvc

我目前有一个带有时间输入屏幕的 Asp.net MVC 4 应用程序。在这个屏幕上,我使用了一些各种 Kendo 控件和 Razor Html 帮助程序,例如:

 @(Html.Kendo().TimePickerFor(m => m.StartTime).Name("startTime"))

我对 endTime 也有同样的看法。现在我有一些 Javascript 可以正确处理我想要的结果,虽然四舍五入可能会更好,但它很困惑,我相信有更好的方法来处理它。该代码看起来像这样:

function change() {
        var startTime = $("#startTime").val()
        var endTime = $("#endTime").val()
        var start = "01/01/2015 " + startTime
        var end = "01/01/2015 " + endTime
        var timeDiff = Math.abs(new Date(end) - new Date(start));
        var d = timeDiff / 1000 / 60 / 60
        var diffM = d * 2
        var diffR = Math.ceil(diffM)
        var diff = diffR / 2

        $('#HoursWorked').val(diff)
        $('#TotalBillTime').val(diff)
    }

我想要的结果是从开始时间中减去结束时间,并将差值转换和四舍五入以显示为以小时为单位的 HoursWorked 计数。现在它需要几个小时和半小时。有没有办法避免所有这些额外的代码?另外,从数学上讲,有没有办法更精确地四舍五入或包括小时、半小时和刻钟?

如果这是一个糟糕的问题,我深表歉意,我是 Javascript 的新手,不熟悉许多其他库或对象。

最佳答案

查看 Moment.js

function change() {
    var startTime = $("#startTime").val()
    var endTime = $("#endTime").val()
    var start = "01/01/2015 " + startTime
    var end = "01/01/2015 " + endTime
    var timeDiff = moment(end) - moment(start);
    var diff = moment.duration(timeDiff).asHours();

    $('#HoursWorked').val(diff)
    $('#TotalBillTime').val(diff)
}

编辑

抱歉,这没有回答您关于以完整、一半和四分之一增量表示小时数的问题。为此,您仍然需要使用一些数学知识。您需要的公式是:

Math.ceil(hours * 4) / 4

例如:

> Math.ceil(1.053 * 4) / 4
1.25
> Math.ceil(1.50001 * 4) / 4
1.75
> Math.ceil(1.4999 * 4) / 4
1.5

回到这个例子:

var diff = moment.duration(timeDiff).asHours();
var roundedDiff = Math.ceil(diff * 4) / 4;

关于javascript - 寻找使用 Javascript 从 Kendo UI timepickers 中减去时间的更好替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29285003/

相关文章:

javascript - 如何在 admin-on-rest 上实现嵌套表单?

javascript - 如何以始终生成唯一值的方式确定性地组合整数?

Javascript 图像 slider 将文本发送到屏幕外并调出页脚

javascript - 如何知道在实现分页时 Firestore 查询将返回多少个项目

javascript - 使用简单的 javascript/jQuery UI 元素

javascript - JS 函数包装

c# - 条件运算符不适用于继承相同基类型的两种类型

javascript - Gmap 在 js 上无法正常工作

c# - 如何使用输入模型发送数据?

javascript - 使用AudioBufferSource时Javascript Web音频API AnalyserNode不起作用