计算自用户输入以来的时间并乘以JS中的每小时费率

时间:2017-07-05 17:35:08

标签: javascript date time

我试图创建一个简单的时间/薪水跟踪器。 用户输入他们开始工作的时间,然后计数器计算自进入以来的小时数和分钟数以及当时的金额 它还应该每1秒更新一次时间和工资(setInterval(function,1000)) 我一直试图让它正确,但似乎无法让Date()像我想要的那样工作,会欣赏正确方向的推动 感谢

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

<input id="input" type="time">
<button onclick="live()">run</button>
<!---->
<p id="output">Output</p>
<script>
       function live() {
           var seconds = 60;
           var minutes = seconds * 60;
           var hours = minutes * 60;

           var rate = 75;

           var input = document.getElementById('input');
           var output = document.getElementById('output');

           var now = new Date();
           var clock_in = input.value;

           var elapsed = now.toString();

           output.innerHTML = now.getHours() + " " +  now.getMinutes() + " " + now.getSeconds() + " " + now.getMilliseconds();
       }
</script>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

我修改了您的代码以接受日期,您可以找到演示working here

基本上问题是您需要有一个有效的日期对象

在没有输入的情况下解释基本代码就像这样工作

// Init Time - valid Object time
var initTime = new Date(2017, 06, 5) // today Date, month start with 0

// time now 
var now = new Date()

// diference in millisecond
var diference = now - initTime;

// rate scale
var rate = 75;
var scale = 75/3600000 // millisecond in a hour

// money 
var money = scale * diference;