这是一个非常常见的问题,但我无法找到正确的答案。我有以下内容:
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?但这是一种固定的方法,我事先不知道差异是天,小时,分钟还是秒。
由于
答案 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,那么简单的减法就是你最好的朋友。