从昨天到明天的Javascript时间计算

时间:2016-11-06 19:39:08

标签: javascript time

让我解释一下。我正在一个人们记录他们做某事的时间的网站上工作。问题是有人在23:00到2:00之间做某事。我现在的剧本说它是-21小时。

第二个问题是以小数计算分钟数。例如1:15是1,25。这不是一个大问题,但我的第二个问题是我可以在几分钟内得到结果吗?

对于我的主要问题,我如何设置一个条件,如果从一天到另一天计算24- $结果,否则正常计算?

这就是我现在所拥有的:

    $(function() {
        $("#check").click(function() {
           var start = $(".preveri_ure").val();
           var end = $(".preveri_ure_2").val();
           s = start.split(':');
           e = end.split(':');
           min = e[1]-s[1];
           hour_carry = 0;
           if(min < 0){
               min += 60;
               hour_carry += 1;
           }
           hour = e[0]-s[0]-hour_carry;
           min = ((min/60)*100).toString()
           diff = hour + "," + min.substring(0,2);
            $("#show").text("Task lasted for : " + diff + "hours");
    });

编辑:

用户在输入字段中使用以下格式输入开始和结束时间: 开始时间:7:00 结束20:15

时差总是不到24小时。所以日期不是必需的。

3 个答案:

答案 0 :(得分:3)

如果第一次小时数大于第二小时数,则加上第二小时24小时。

事件更好的解决方案是从每个JavaScript Date对象创建并减去。

答案 1 :(得分:1)

完全同意@Scott Marcus。如果有完整的日期而不仅仅是小时和分钟,那么比较起来会更容易。

但是从@Studio DnB的角度来看, 让我们考虑开始和结束时间属于同一天。但是,开始时间必须小于下拉选择中的结束时间。

这是代码

var tempStartDate = new Date(); // just inintialise start and end date
var tempEndtDate = new Date();      
s = date1.split(':');
e = date2.split(':');
tempStartDate.setHours(s[0], s[1], 0); // set Hours and Minutes for start and end date
tempEndtDate.setHours(e[0], e[1], 0);

var startTime ;
var endTime ;
  // compare to make start time less then end time always for same day log
if (tempEndtDate.getTime() > tempStartDate.getTime()){
      endTime = tempEndtDate.getTime();
      startTime= tempStartDate.getTime();
  }
else {
      endTime = tempStartDate.getTime();
     startTime= tempEndtDate.getTime();
 }

  var difference = endTime - startTime;

  var hoursDifference = Math.floor(difference/1000/60/60);
    difference -= hoursDifference*1000*60*60

    var minutesDifference = Math.floor(difference/1000/60);
    difference -= minutesDifference*1000*60

示例在here

答案 2 :(得分:0)

我要求用户输入日期和时间并使用Javascript UTC将特定日期时间转换为自1970年1月1日以来的秒数。 http://www.w3schools.com/jsref/jsref_utc.asp 然后计算startDate - endDate并转换为分钟。