如何在JavaScript中减去日期/时间?[重复]

2020/10/22 06:01 · javascript ·  · 0评论

我在一个包含日期/时间的网格中有一个字段,我需要知道该日期与当前日期/时间之间的区别。这样做的最佳方法是什么?

日期存储为"2011-02-07 15:13:06"

这将为您提供两个日期之间的时差,以毫秒为单位

var diff = Math.abs(date1 - date2);

在您的示例中,

var diff = Math.abs(new Date() - compareDate);

您需要确保这compareDate是一个有效的Date对象。

这样的事情可能会为您工作

var diff = Math.abs(new Date() - new Date(dateStr.replace(/-/g,'/')));

"2011-02-07 15:13:06"变成new Date('2011/02/07 15:13:06'),这是Date构造函数可以理解的格式

您可以只减去两个日期对象。

var d1 = new Date(); //"now"
var d2 = new Date("2011/02/01")  // some date
var diff = Math.abs(d1-d2);  // difference in milliseconds

除非您要在同一浏览器客户端上减去日期,并且不关心夏时制等极端情况否则最好使用带有强大本地化API的moment.js例如,这就是我的utils.js中的内容:

subtractDates: function(date1, date2) {
    return moment.subtract(date1, date2).milliseconds();
},
millisecondsSince: function(dateSince) {
    return moment().subtract(dateSince).milliseconds();
},

您可以使用getTime()方法将转换为Date1970年1月1日以来的毫秒数。然后您可以轻松地对日期进行任何算术运算。当然你也可以转换为数字的回DatesetTime()请参阅此处的示例。

如果您希望在当地时区和夏令时意识有所不同的挂钟时间。


Date.prototype.diffDays = function (date: Date): number {

    var utcThis = Date.UTC(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds(), this.getMilliseconds());
    var utcOther = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());

    return (utcThis - utcOther) / 86400000;
};

测试


it('diffDays - Czech DST', function () {
    // expect this to parse as local time
    // with Czech calendar DST change happened 2012-03-25 02:00
    var pre = new Date('2012/03/24 03:04:05');
    var post = new Date('2012/03/27 03:04:05');

    // regardless DST, you still wish to see 3 days
    expect(pre.diffDays(post)).toEqual(-3);
});

几分钟或几秒钟的时间间隔相同。

本文地址:http://javascript.askforanswer.com/ruhezaijavascriptzhongjianquriqi-shijianzhongfu.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!