1

in_time と out_time の 2 つの時間があります。javascript を使用してこれらの 2 つの時間を追加したいのですが、どうすればよいですか? in_time と out_time の値は、テキスト ボックスから取得されます。私のhtmlコードは

<div>   
<b>PunchIn</b>
    <input type="text" id="intime" class="time" placeholder="09:00:00" />
    <p class="error">PunchTime is not valid</p>
</div>
<br/>
<div>   
    <b>OutTime</b>
    <input type="text" id="brktime" class="time" placeholder="06:00:00" />
    <p class="error1">OutTime is not valid</p>
</div>

デモからコードを見ることができます

4

5 に答える 5

10

時間を秒に変換して加算し、結果をフォーマットします。

function toSeconds(s) {
  var p = s.split(':');
  return parseInt(p[0], 10) * 3600 + parseInt(p[1], 10) * 60 + parseInt(p[2], 10);
}

function fill(s, digits) {
  s = s.toString();
  while (s.length < digits) s = '0' + s;
  return s;
}

var sec = toSeconds(intime) + toSeconds(out);

var result =
  fill(Math.floor(sec / 3600), 2) + ':' +
  fill(Math.floor(sec / 60) % 60, 2) + ':' +
  fill(sec % 60, 2);

デモ: http://jsfiddle.net/Guffa/JLh6W/

于 2013-04-08T12:16:28.717 に答える
1

https://github.com/timrwood/moment議事録ライブラリは、必要なもののほとんどをカバーしています。Google Closure Library の日付の実装も確認してください。http://closure-library.googlecode.com/svn/docs/namespace_goog_date.html

于 2013-04-08T12:11:02.500 に答える
0

以下の関数を使用して、時間文字列を数値に変換し、それらを合計することができます

function getTimeAsSeconds(time){
    var timeArray = time.split(':');
    return Number(timeArray [0]) * 3600 + Number(timeArray [1]) * 60 + Number(timeArray[2]);
}

何かのようなもの:

var timeInSeconds = getTimeAsSeconds(document.getElementById('intime').value) + getTimeAsSeconds(document.getElementById('brktime').value);
于 2013-04-08T12:13:42.683 に答える
0

そこには多くのライブラリがあります(Google検索はしませんでしたが、@ alex23には1つあります)。ただし、プロセスは通常同じです。文字列を最小公倍数に変換します。この場合は数秒。秒を取得したら、2 つを足し合わせてから、再び時間分秒に変換します。これらの変換は、@codebox が示した単純な乗算と除算です。

于 2013-04-08T12:16:52.630 に答える