我如何计算小时之间的时间?

时间:2014-01-05 00:20:07

标签: javascript date math

我有两个字符串,如

var x = "22:10";
var y = "23:15";

如何使用javascript计算x进入y的剩余时间?

在这种情况下将是

var final = "01:05"

谢谢!

3 个答案:

答案 0 :(得分:4)

@Man of Snow解决方案很简单,我认为它运作良好,但如果你需要更复杂的例子来处理日期,你可以查看我的代码:

var x = "22:10";
var y = "23:15";

function createDate(v) {
    var date = new Date(),
        va = v.split(':');

    date.setHours(va[0]);
    date.setMinutes(va[1]);

    return date;
}

function getDiff(x, y) {
    var date1 = createDate(x),
        date2 = createDate(y);

    var result = new Date();
    result.setTime(date2.getTime() - date1.getTime());

    var hours = result.getUTCHours().toString(),
        minutes = result.getUTCMinutes().toString();

    if (hours.length == 1) {
        hours = '0' + hours;
    }

    if (minutes.length == 1) {
        minutes = '0' + minutes;
    }

    return hours + ':' + minutes;
}

var diff = getDiff(x, y);

alert(diff);

JSFIDDLE

答案 1 :(得分:1)

代码在哪里?

这是代码!

var x = "22:10";
var y = "23:15";

var xTotal = parseInt(x.split(':')[0] * 60) + parseInt(x.split(':')[1]);
var yTotal = parseInt(y.split(':')[0] * 60) + parseInt(y.split(':')[1]);
var total = yTotal - xTotal;

var minutes = Math.floor(total / 60);
var seconds = total - minutes * 60;

if(seconds.toString().length == 1)
{
    seconds = seconds.toString();
    seconds = '0' + seconds;
}

var final = minutes.toString() + ':' + seconds.toString();
console.log(final);

记录1:05(如您所见,也可以使用分钟)。

它是如何工作的?

我很高兴你问,本。那么,它转换结肠周围的第一和第二部分以秒(分钟* 40),当然parseInt,因为他们的字符串!不管怎么说,现在划分的数字的圆形状态(家中程序员Math.floor() 60 以获得分钟数。你知道它的作用吗,本?

(Ben:不,但我希望它按照我的想法行事。)

我很高兴你这么说,本!好了,这里就是它的然后:的它实际上的需要是秒总数和减去它通过分什么样的数量* 60,和它现在做了吗?好吧,我会告诉你的,本!它实际上将它转换为字符串!分钟,冒号,然后秒!那有多酷?

(Ben:太好了,我们会联系。下一个?)

我懒得复制/粘贴这个。小提琴在哪里?

It's right over here, Ben! (which alerts instead of logs)

......谁是Ben ???

答案 2 :(得分:1)

您可以使用

function padding(str, len, char) {
    return (Array(len).join(char)+str).substr(-len);
}

var x = "22:10",
    y = "23:15",
    day = "Sun Jan 05 2014 ", // or whatever
    final = new Date(new Date(day+y)-new Date(day+x));
final = padding(final.getUTCHours(), 2, 0) + ':' + padding(final.getUTCMinutes(), 2, 0);