Hoe de datum / tijd in JavaScript af te trekken? [DUPLICEER]

Ik heb een veld bij een raster met datum / tijd en ik moet het verschil kennen tussen die en de huidige datum / tijd. Wat kan de beste manier zijn om dit te doen?

De datums worden opgeslagen zoals "2011-02-07 15:13:06".


1, Autoriteit 100%

Hiermee geeft u het verschil tussen twee data, in milliseconden

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

In uw voorbeeld zou het

zijn

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

U moet ervoor zorgen dat compareDateeen geldige Dateobject is.

zoiets zal waarschijnlijk voor u werken

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

d.w.z. Draaien "2011-02-07 15:13:06"in new Date('2011/02/07 15:13:06'), dat is een formaat de DateConstructor kan begrijpen.


2, Autoriteit 18%

U kunt slechts twee datumobjecten onderleiden.

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

3, Autoriteit 7%

Tenzij u datums op dezelfde browserclient aftraceert en niet geeft om randgevallen zoals daglichtverwijderingen, bent u waarschijnlijk beter af met moment. JS die krachtige gelokaliseerde API’s biedt. Dit is bijvoorbeeld wat ik heb in mijn utils.js:

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

4, Autoriteit 6%

Als u verschil in wandkloktijd wilt krijgen, voor lokale timezone en met daglichtbesparing.


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

Test


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

Minuten of seconden op dezelfde manier.

Other episodes