1

このコードは 0:40 分を与えるはずですが、ある方法では 0:20 分になり、別の方法では 1:40 分になります。

var t1 = '12:05'.split(':'),
    t2 = '12:45'.split(':');

var d1 = new Date(0,0,0,t1[0],t1[1]),
    d2 = new Date(0,0,0,t2[0],t2[1]);

document.write(d1+'<BR>');
document.write(d2+'<BR>');

var d = new Date(d1-d2);
// should give 0:40 minutes
document.write(d.getHours() + ":" + d.getMinutes() + '<BR>');
// 0:20 minutes
var d = new Date(d2-d1);
document.write(d.getHours() + ":" + d.getMinutes() + '<BR>');
// 1:40 minutes

何か案は?

4

2 に答える 2

2

独自の関数を記述して、2 つの日付の差を計算し、結果を HH:MM 形式で表示できます。

Javascript はタイムスタンプで 2 つの日付の差を返すため、そのタイムスタンプを使用して JS 日付オブジェクトを取得すると、まったく新しい日付が作成されます。

サンプルの dateDiff 関数は次のとおりです。

function dateDiff(){
    var start = '12:05'.split(':'), // hardcoded value for sample
    end = '12:45'.split(':');      // you can pass start and end value as parameter to dateDiff function.

    var startDate = new Date(0, 0, 0, start[0], start[1], 0);
    var endDate = new Date(0, 0, 0, end[0], end[1], 0);
    var diff = endDate.getTime() - startDate.getTime();
    var hours = Math.floor(diff / 1000 / 60 / 60);
    diff -= hours * 1000 * 60 * 60;
    var minutes = Math.floor(diff / 1000 / 60);

    return ( (hours < 9 ? "0" : "") + hours + ":" + (minutes < 9 ? "0" : "") + minutes);
}
于 2013-02-23T19:27:09.267 に答える