[英]Looking for a better alternative for using Javascript to subtract time from Kendo UI timepickers
我目前有一个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)
}
我想要的结果是从StartTime中减去EndTime,将要转换和四舍五入的差异显示为HoursWorked小时数。 现在,它需要几个小时半小时。 有没有办法避免所有这些额外的代码? 另外,从数学上讲,有没有一种方法可以更精确地舍入或包含小时,半小时和四分之一小时?
如果这是一个不好的问题,我感到抱歉,我是Java的新手,并且不熟悉许多其他库或对象。
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的date函数。 太荒谬了
其次,有一些很酷的框架可以使其变得更好。
倒数计时可让您轻松表示两个日期之间的差异。 http://countdownjs.org/
Moment.js使整体日期处理变得更好。 http://momentjs.com/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.