从另一个减去一次

时间:2014-01-17 19:43:20

标签: javascript jquery local-storage

我已经很好地寻找了我正在寻找的东西,但似乎无法找到我需要的东西。我是jQuery和JavaScript的新手。

我想要做的就是从另一个时钟中减去一个24小时的时钟,以查找使用JQuery或JavaScript分配了多少小时,即开始时间:12:00结束时间:16:00将是4小时。

从第二天的12:00到12:00,如何在没有问题的情况下这样做?

我不是在处理日期,只是时间。

目前,时间作为start_time end_time的对象的一部分存储:

var shift = {'location':$('#shift_location').val(),
             'shift_date': $('#shift_date').val(),
             'start_time':$('#shift_start_time').val(),
             'end_time':$('#shift_end_time').val()
            };
var shift_list = JSON.parse(localStorage.shift);
shift_list.push(shift);
localStorage.shift = JSON.stringify(shift_list);  

2 个答案:

答案 0 :(得分:1)

您可以使用momentjs在javascript中处理日期。

示例(moment docfiddle):

var start_time = "12:00";
var end_time = "16:00";

var start = moment.duration(start_time, 'h');
var end = moment.duration(end_time, 'h');
alert(end.subtract(start).hours()); // 4

当然,由于任务的简单性,你总是可以使用普通的javascript:

var start_time = "12:00";
var end_time = "16:00";
alert(parseInt(end_time, 10) - parseInt(start_time, 10)); // 4

答案 1 :(得分:1)

使用给定的信息,即start_time和end_time,您无法覆盖多天。它们只需在0到23小时之间振荡。计算多天没有计数器。如果你需要,你需要另外两个状态,它们将存储start_date和end_date,它们将作为@John Boker所指出的反击。但如果您确定差异从未超过24小时,那么我们可以使用JAVASCRIPT: subtracting Time and getting its number of minutes 函数中的parseTime进行我们自己的修改。

function parseTime(s) {
   var c = s.split(':');
   return parseInt(c[0]) * 60 + parseInt(c[1]);
}

var limit = parseTime("23:59");

function getDiff(start_time, end_time){
   var a = parseTime(start_time), b = parseTime(end_time);
   if(b < a) // means its the next day.
      return Math.round((limit - a + b)/60);
   else if(b > a)
      return Math.round((b - a)/60);
   else if(b - a == 0)
      return 24.0;
   else
      alert("Invalid data");
 }

 alert(getDiff("12:00", "11:00"));