使用javascript以AM / PM格式减去两次

时间:2013-04-06 08:12:27

标签: javascript jquery datejs

我正在使用date.js插件将我的时间转换为日期对象,然后我将它们减去。但结果无效。我的时间是这种格式11:00 pm 这就是我正在做的事情:

var tim_i = $('#in_time').val();
var tim_o = $('#out_time').val();
total_tim = "";
if (tim_i && tim_o ){
    d1 = Date.parse(tim_i);
    d2 = Date.parse(tim_o);
    date_diff = new Date(d2 - d1);
    total_tim=date_diff.getHours() + ':' + date_diff.getMinutes();
}

$('#total_time').val(total_tim); 

我还需要做些什么吗?

2 个答案:

答案 0 :(得分:1)

Datejs中的TimeSpan类可能有助于简化问题。

这是一个可以在Firebug中运行的示例,它将两个字符串解析为Date对象,然后以小时+分钟输出差异。

示例

var d1 = Date.parse("6:30 am");
var d2 = Date.parse("11:00 pm");

var diff = new TimeSpan(d2 - d1);

console.log("Hours: ", diff.hours);
console.log("Minutes: ", diff.minutes);

希望这有帮助。

编辑:如果你真的想要简洁,你甚至可以简化为一行。

new TimeSpan(Date.parse("11:00 pm")-Date.parse("6:30 am")).toString("H:mm")

答案 1 :(得分:0)

试试这个:

var tim_i = new Date($('#in_time').val());
var tim_o = new Date($('#out_time').val());
total_tim = "";
if (tim_i && tim_o) {
    var timeDiff = Math.abs(tim_o.getTime() - tim_i.getTime());
    var getHours = Math.ceil(timeDiff / (1000 * 3600));
    var getMinutes = Math.ceil(timeDiff % (1000 * 60));
    total_tim = getHours + ':' + getMinutes;
}