Leistung
Heute 2020.02.27 führe ich Tests der gewählten Lösungen auf Chrome v80.0, Safari v13.0.5 und Firefox 73.0.1 auf MacOs High Sierra v10.13.6 durch
Schlussfolgerungen
- Lösungen
d1==d2
(D) und d1===d2
(E) sind bei allen Browsern am schnellsten
- Lösung
getTime
(A) ist schneller als valueOf
(B) (beide sind mittelschnell)
- die Lösungen F,L,N sind bei allen Browsern am langsamsten
Einzelheiten
Im folgenden Ausschnitt werden die in den Leistungstests verwendeten Lösungen vorgestellt. Sie können den Test auf Ihrem Rechner durchführen HIER
function A(d1,d2) {
return d1.getTime() == d2.getTime();
}
function B(d1,d2) {
return d1.valueOf() == d2.valueOf();
}
function C(d1,d2) {
return Number(d1) == Number(d2);
}
function D(d1,d2) {
return d1 == d2;
}
function E(d1,d2) {
return d1 === d2;
}
function F(d1,d2) {
return (!(d1>d2 || d2>d1));
}
function G(d1,d2) {
return d1*1 == d2*1;
}
function H(d1,d2) {
return +d1 == +d2;
}
function I(d1,d2) {
return !(+d1 - +d2);
}
function J(d1,d2) {
return !(d1 - d2);
}
function K(d1,d2) {
return d1 - d2 == 0;
}
function L(d1,d2) {
return !((d1>d2)-(d1<d2));
}
function M(d1,d2) {
return d1.getFullYear() === d2.getFullYear()
&& d1.getDate() === d2.getDate()
&& d1.getMonth() === d2.getMonth();
}
function N(d1,d2) {
return (isFinite(d1.valueOf()) && isFinite(d2.valueOf()) ? !((d1>d2)-(d1<d2)) : false );
}
// TEST
let past= new Date('2002-12-24'); // past
let now= new Date('2020-02-26'); // now
console.log('Code d1>d2 d1<d2 d1=d2')
var log = (l,f) => console.log(`${l} ${f(now,past)} ${f(past,now)} ${f(now,now)}`);
log('A',A);
log('B',B);
log('C',C);
log('D',D);
log('E',E);
log('G',G);
log('H',H);
log('I',I);
log('J',J);
log('K',K);
log('L',L);
log('M',M);
log('N',N);
p {color: red}
<p>This snippet only presents tested solutions (it not perform tests itself)</p>
Ergebnisse für Chrom
20 Stimmen
Wenn es um DateTime und Manipulation in JS geht, suche ich nicht weiter als momentjs :)
101 Stimmen
Keine Notwendigkeit, Momentjs zu verwenden, um 2 Daten zu vergleichen. Verwenden Sie einfach reines Javascript's Date Objekt. Prüfen Sie die Hauptantwort für weitere Details.
0 Stimmen
Sie können die folgende Antwort lesen: stackoverflow.com/questions/4812152/ Prüfen Sie getDateDifference und getDifferenceInDays, ob es helfen kann.
0 Stimmen
Ich werde Ihnen einen Grund geben, weiter als Moment.js zu schauen ( was ich liebe, ABER... ): Nicht für Schleifenlasten verwenden
0 Stimmen
Für eine nützliche Funktion um die Uhrzeit zu erfahren Differenz getrennt nach Einheiten (Sekunden, Minuten, Stunden, usw.), siehe die Antwort unter stackoverflow.com/questions/1968167/ . Diese Antwort ist jetzt auch verfügbar unter stackoverflow.com/a/46529159/3787376 .
9 Stimmen
Für diejenigen, die wie ich erst später dazugekommen sind, ist moment.js jetzt im "Wartungsmodus". d.h. nicht mehr aktiv entwickelt werden.
1 Stimmen
Für diejenigen, die noch später dazugekommen sind, ist moment.js nicht nur im Wartungsmodus, sondern auch eine riesige Bibliothek (4,21 MB!). Wenn Sie nur einfache Funktionen wie den Vergleich von zwei Daten benötigen, können Sie eine kleine (20kb) Bibliothek ausprobieren, an der ich gearbeitet habe npmjs.com/package/easy-dates