正确的方法来获取Javascript中Date对象之间的区别

时间:2015-12-15 02:15:07

标签: javascript

这是一个非常常见的问题,但我无法找到正确的答案。我有以下内容:

tcom
Mon Dec 14 2015 12:22:28 GMT-0500 (PET)
treq
Mon Dec 14 2015 12:18:27 GMT-0500 (PET)

tcom - treq
241122
tdif = new Date(tcom - treq);
Wed Dec 31 1969 19:04:01 GMT-0500 (PET)

我见过这样的答案:Get difference between 2 dates in javascript?但这是一种固定的方法,我事先不知道差异是天,小时,分钟还是秒。

由于

3 个答案:

答案 0 :(得分:0)

你返回的是毫秒差异,所以在这里做一些数学计算。 1天= 24 x 60 x 60 x 10 = 864000毫秒。

答案 1 :(得分:0)

是的,减去两个Date对象是找到差异的正确方法,以毫秒为单位。

以下是等效的:

date1 - date2
date1.getTime() - date2.getTime()

如果要将结果转换为年,月,日等,可以在epoch中创建一个新的Date对象,并将毫秒部分设置为您已获得的偏移量。 e.g:

var start = new Date();

// some time passes...

var end = new Date();

var elapsedMillis = end - start;

var elapsed = new Date(1970, 0, 1, 0, 0, 0, elapsedMillis);

然后,您可以使用getMinutes()getSeconds()等方法来获取所需的组件。

答案 2 :(得分:0)

如果您尝试在多个不同的单元中获得差异,则可以使用带有枚举值的函数,例如:

var Units = {
    MS: 1,
    SEC: 1000,
    MIN: 1000 * 60,
    HOUR: 1000 * 60 * 60,
    DAY: 1000 * 60 * 60 * 24,
    YEAR: 1000 * 60 * 60 * 24 * 365
};

function getDateDiff( a, b, unit ) {
    return (a - b) / unit;
}

然后你可以轻松地调用它:

getDateDiff( date1, date2, Units.HOUR );

如果你只需要ms,那么简单的减法就是你最好的朋友。