寻找使用Javascript从剑道UI计时器中减去时间的更好替代方法

寻找使用Javascript从剑道UI计时器中减去时间的更好替代方法,javascript,jquery,asp.net-mvc,razor,kendo-asp.net-mvc,Javascript,Jquery,Asp.net Mvc,Razor,Kendo Asp.net Mvc,我目前有一个Asp.NETMVC4应用程序,带有时间输入屏幕。在这个屏幕上,我使用了一些不同的剑道控件和Razor Html帮助程序,例如: @(Html.Kendo().TimePickerFor(m => m.StartTime).Name("startTime")) > Math.ceil(1.053 * 4) / 4 1.25 > Math.ceil(1.50001 * 4) / 4 1.75 > Math.ceil(1.4999 * 4) / 4 1.5

我目前有一个Asp.NETMVC4应用程序,带有时间输入屏幕。在这个屏幕上,我使用了一些不同的剑道控件和Razor Html帮助程序,例如:

 @(Html.Kendo().TimePickerFor(m => m.StartTime).Name("startTime"))
> Math.ceil(1.053 * 4) / 4
1.25
> Math.ceil(1.50001 * 4) / 4
1.75
> Math.ceil(1.4999 * 4) / 4
1.5
我也有同样的结束时间。现在我有一些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)
    }
我想要的结果是从StartTime中减去EndTime,然后将差值转换并四舍五入,以小时为单位显示为HoursWorked计数。现在需要几个半小时。有没有办法避免所有这些额外的代码?从数学上来说,有没有一种方法可以更精确地计算出这一点,或者包括小时、半小时和四分之一小时

如果这是一个不好的问题,我很抱歉,因为我对Javascript比较新,并且不熟悉许多其他库或对象。

请查看

编辑

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

Math.ceil(hours * 4) / 4
例如:

 @(Html.Kendo().TimePickerFor(m => m.StartTime).Name("startTime"))
> 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的日期函数严重不足。这太荒谬了

其次,有几个很酷的框架可以让它变得更好

倒计时允许您轻松表示两个日期之间的差异。

js使整体日期处理变得更好。

我开始在Javascript中看到这一点。感谢您提供的参考资料。js正是我想要的,我将进一步了解countdownjs。