获取Javascript中日期对象之间差异的正确方法

获取Javascript中日期对象之间差异的正确方法,javascript,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) 我见过这样的答案:但这是一个固定的方法,我事先不知道差异是几天、几小时、

这是一个非常常见的问题,但是我没有找到正确的答案。我有以下资料:

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)
我见过这样的答案:但这是一个固定的方法,我事先不知道差异是几天、几小时、几分钟还是几秒钟


谢谢

返回的结果是以毫秒为单位的差值,所以请在此进行一些数学计算。
1天=24 x 60 x 60 x 10=864000毫秒。

是的,减去两个日期对象是以毫秒为单位计算其差值的正确方法

以下是等效的:

date1 - date2
date1.getTime() - date2.getTime()
如果要将结果转换为年、月、日等,可以在历元处创建一个新的日期对象,并将毫秒部分设置为已获得的偏移量。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()
等方法来获取所需的组件。

如果您试图获得不同单位数的差异,您可以使用一个取枚举值的函数,如:

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 );

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

tcom-treq
嗯,
241122
ms就是这两个日期时间的差。你到底想要什么?复制的,或其他“1天=24 x 60 x 60 x 10=864000毫秒”——除非不是这样