如何在Jquery中以HH:MM格式计算总时间数据&在单独的文本框中的时间

时间:2014-08-25 07:43:02

标签: jquery asp.net

假设我有5个文本框分别用于开始日期,开始时间,结束日期,结束时间和时间。另一个文本框用于在asp.net中的网格视图中显示结果。我想计算两个日期之间的差异以及结束时间文本框的密钥启动事件的时间。将其显示在用于显示结果的文本框中。

我的输入将是这样的:

日期为2014年8月20日 时间:17:55

我是j查询&无法搜索我的问题的确切或类似的解决方案。任何人都可以帮忙吗? 提前致谢。

var start = $('#start_date').val();
var end = $('#end_date').val();

// end - start returns difference in milliseconds 
var diff = new Date(end - start);

// get days
var days = diff/1000/60/60/24;

Example

var start = new Date("2010-04-01"),
    end   = new Date(),
    diff  = new Date(end - start),
    days  = diff/1000/60/60/24;

days; //=> 8.525845775462964

从堆栈溢出本身获得上述解决方案,但这不完全是我的。我有约会和时间时间都在单独的文本框中。

2 个答案:

答案 0 :(得分:1)

moment.js是一个好主意

$( "#endtime" ).keyup(function() {
var startdt = new Date($("#startdate").val() + " " + $("#starttime").val());

var enddt = new Date($("#enddate").val() + " " + $("#endtime").val());

var diff = enddt - startdt;

var days = Math.floor(diff / (1000 * 60 * 60 * 24));
diff -=  days * (1000 * 60 * 60 * 24);

var hours = Math.floor(diff / (1000 * 60 * 60));
diff -= hours * (1000 * 60 * 60);

var mins = Math.floor(diff / (1000 * 60));
diff -= mins * (1000 * 60);

var seconds = Math.floor(diff / (1000));
diff -= seconds * (1000);

$("#result").val(days + " days : " + hours + " hours : " + mins + " minutes : " + seconds + " seconds");

})

在这里,您可以找到此工作示例jsfiddle example

我是在“飞行中”写的,所以它可能不是很优雅而是有效。

请务必检查输入值的有效性

答案 1 :(得分:0)

您可以使用moment.js库。它可以很容易地进行大量的日期和时间操作。

看看这个SO Q& A:

Get the time difference between two datetimes