javascript计算时差

时间:2014-03-23 11:21:03

标签: javascript time

我想让用户输入条目和退出时间,然后根据小时数计算费用。我认为将时间转换为分钟然后计算差异。谁能教我怎么做?

7 个答案:

答案 0 :(得分:2)

首先必须解析日期,例如在新Date的构造函数中:

var first = new Date(yourDateAsAString)
var second = new Date(yourOtherDateAsAString)

然后您可以按如下方式计算天数差异:

var difference = second.getTime() - first.getTime()

这些是毫秒。做/ 1000秒,然后/ 60分钟,然后/ 60小时,然后/ 24小时的最终差异。

答案 1 :(得分:1)

试试这个:

var timestampEntry = new Date(entry_time).getTime();
var timestampExit = new Date(exit_time).getTime();

var delta = timestampExit - timestampEntry;
console.log(delta / 1000 / 60 / 60);

答案 2 :(得分:1)

HTML:

<input id="date1" type="text">
<input id="date2" type="text">

<button id="calculate">calculate!</button>    

<span id="result"></span>

的javascript:

function calculate() {
    var input1 = document.getElementById('date1').value;
    var input2 = document.getElementById('date2').value;

    var date1 = new Date(input1);
    var date2 = new Date(input2);

    var result = (date2 - date1) / 1000 / 60 / 60;

    document.getElementById('result').innerHTML = result;
}

document.getElementById('calculate').onclick = calculate;

jsfiddle:http://jsfiddle.net/3Z9dM/

请注意,您需要一个完整的日期,您必须知道一天。

使用Date()的构造函数解析日期在所有浏览器中的工作方式也不完全相同。注意来自一个大洞穴的巨魔。

答案 3 :(得分:1)

基于24小时制:

时间= hh:mm

前:07:34,23:22

function calculateHours(start, end) {

    var 
      startHours = parseInt(start.slice(0,2),10),
      startMin = parseInt(start.slice(2), 10),
      stopHours = parseInt(stop.slice(0,2), 10),
      stopMin = parseInt(stop.slice(2), 10),
      total
   ;

   total = ((stopHours * 60 + stopMin) - (startHours * 60 + startMin)) / 60;

   return total;
}

肯定有更好的方法可以做这样的事情,但这是你要求的功能。

答案 4 :(得分:1)

虽然这可以在纯JavaScript中完成,但如果您正在处理和操作大量日期时间,您可能需要查看moment.js。它使得时间和时区的工作变得更好。

答案 5 :(得分:1)

你可以做一些这样的事情,我还没有完成表单验证

以下是plunkr链接:http://plnkr.co/edit/8wVC1yZeGCmrY0rSXMzL?p=preview

答案 6 :(得分:1)

自1970年1月1日午夜起,JS以日期为单位存储日期 因此,计算两个日期之间的时间就像减去它们一样简单。

在两个不同的时间创建一个Date()对象。

var time1 = new Date(); var time2 = new Date();

var difference = time2-time1;

var inHours =差异/(1000 * 60 * 60);