获取Javascript中Date对象之间差异的正确方法
Correct way to get the difference between Date objects in 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)
我看到过这样的答案:用javascript获取两个日期之间的差异?但这是一种固定的方法,我事先不知道区别是几天、几小时、几分钟还是几秒钟。
感谢
返回的值以毫秒为单位,所以在这里进行一些数学计算。1天=24 x 60 x 60 x 10=864000毫秒。
是的,减去两个Date对象是以毫秒为单位查找差异的正确方法。
以下是等效的:
date1 - date2
date1.getTime() - date2.getTime()
如果您想将结果转换为年、月、天等,您可以在epoch创建一个新的Date对象,其中毫秒部分设置为您获得的偏移量。例如:
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 );
如果你只需要毫秒,那么一个简单的减法就是你最好的朋友。
相关文章:
- XMLHttpRequest对象的open()和send()方法之间有什么区别
- MongoDB原生:toString和toHexString方法之间有什么区别吗?
- JavaScript:Date 的 toString() 和 toLocaleString() 方法之间的区别
- 在Ember.js中的方法之间共享变量上下文
- 在要设置动画的所有方法之间进行选择
- 声明Javascript名称空间的两种方法之间的区别
- JQuery:什么'这两个$.get()方法之间的区别是什么
- 什么'这两种对象构造方法之间的区别是什么
- 使用:nth-child()选择器和.get()方法之间的性能差异
- 将返回值作为主干视图方法之间的参数传递
- 直接调用方法和使用“.call”方法之间的区别?WSS
- JS中各种对象值收集方法之间的差异
- Google Maps/Google Places:getPlace 和 getDetails 方法之间有区别吗?
- 在构造函数内部和外部定义公共方法之间有什么区别吗?
- Javascript在调用者“方法”之间更改变量
- 引导方法和运行方法之间的角度有什么区别
- 如何在 react 中的方法之间进行通信
- 这些ES6导入方法之间的区别是什么
- 使用回调和调用方法之间的区别
- 两种提交表格方法之间的差异