Vergleichen Sie zwei Daten mit JavaScript

Lesezeit: 5 Minuten

Vergleichen Sie zwei Daten mit JavaScript
Alex

Kann jemand einen Weg vorschlagen, die Werte von zu vergleichen? zwei Termine größer als, kleiner als und nicht in der Vergangenheit mit JavaScript? Die Werte kommen aus Textfeldern.

  • Wenn es um DateTime und Manipulation in JS geht, suche ich nicht weiter als momentjs 🙂

    – Halceyon

    23. September 2013 um 13:35 Uhr

  • keine Notwendigkeit, momentjs zu verwenden, um 2 Daten zu vergleichen. Verwenden Sie einfach das Date-Objekt von reinem Javascript. Überprüfen Sie die Hauptantwort für weitere Details.

    – Lukas Lies

    9. Juni 2016 um 5:26 Uhr

  • Sie können auf die folgende Antwort verweisen: stackoverflow.com/questions/4812152/… Überprüfen Sie getDateDifference und getDifferenceInDays, wenn es hilfreich sein kann.

    – Vikash Rajpurohit

    3. November 2016 um 10:46 Uhr


  • Ich gebe Ihnen einen Grund, weiter als Moment.js (was ich liebe, ABER…): Nicht zum Schleifen von Lasten verwenden

    – Geek-Aktien

    29. Mai 2017 um 20:07 Uhr

  • Für diejenigen wie mich, die vielleicht später dazugekommen sind, moment.js befindet sich jetzt im „Wartungsmodus“, dh nicht mehr aktiv weiterentwickelt.

    – Bob Brown

    2. Mai 2021 um 15:03 Uhr

Vergleichen Sie zwei Daten mit JavaScript
etwas

Der einfachste Weg, Datumsangaben in Javascript zu vergleichen, besteht darin, sie zuerst in ein Datumsobjekt zu konvertieren und dann diese Datumsobjekte zu vergleichen.

Unten finden Sie ein Objekt mit drei Funktionen:

  • daten.vergleichen(a,b)

    Gibt eine Zahl zurück:

    • -1 wenn a < b
    • 0 wenn a = b
    • 1 wenn a > b
    • NaN, wenn a oder b ein illegales Datum ist
  • Daten.inRange (d,anfang,ende)

    Gibt einen booleschen Wert oder NaN zurück:

    • wahr wenn D liegt zwischen den Anfang und Ende (inklusive)
    • falsch wenn D ist vor Anfang oder danach Ende.
    • NaN, wenn eines oder mehrere der Daten illegal sind.
  • daten.konvert

    Wird von den anderen Funktionen verwendet, um ihre Eingabe in ein Datumsobjekt umzuwandeln. Die Eingabe kann sein

    • ein Datum-object : Die Eingabe wird unverändert zurückgegeben.
    • ein Reihe: Interpretiert als [year,month,day]. HINWEIS Monat ist 0-11.
    • ein Anzahl : Interpretiert als Anzahl von Millisekunden seit dem 1. Januar 1970 (ein Zeitstempel)
    • ein Schnur : Mehrere verschiedene Formate werden unterstützt, wie “JJJJ/MM/TT”, “MM/TT/JJJJ”, “31. Januar 2009” usw.
    • ein Objekt: Wird als Objekt mit Jahr-, Monat- und Datumsattributen interpretiert. HINWEIS Monat ist 0-11.

.

// Source: http://stackoverflow.com/questions/497790
var dates = {
    convert:function(d) {
        // Converts the date in d to a date-object. The input can be:
        //   a date object: returned without modification
        //  an array      : Interpreted as [year,month,day]. NOTE: month is 0-11.
        //   a number     : Interpreted as number of milliseconds
        //                  since 1 Jan 1970 (a timestamp) 
        //   a string     : Any format supported by the javascript engine, like
        //                  "YYYY/MM/DD", "MM/DD/YYYY", "Jan 31 2009" etc.
        //  an object     : Interpreted as an object with year, month and date
        //                  attributes.  **NOTE** month is 0-11.
        return (
            d.constructor === Date ? d :
            d.constructor === Array ? new Date(d[0],d[1],d[2]) :
            d.constructor === Number ? new Date(d) :
            d.constructor === String ? new Date(d) :
            typeof d === "object" ? new Date(d.year,d.month,d.date) :
            NaN
        );
    },
    compare:function(a,b) {
        // Compare two dates (could be of any type supported by the convert
        // function above) and returns:
        //  -1 : if a < b
        //   0 : if a = b
        //   1 : if a > b
        // NaN : if a or b is an illegal date
        // NOTE: The code inside isFinite does an assignment (=).
        return (
            isFinite(a=this.convert(a).valueOf()) &&
            isFinite(b=this.convert(b).valueOf()) ?
            (a>b)-(a<b) :
            NaN
        );
    },
    inRange:function(d,start,end) {
        // Checks if date in d is between dates in start and end.
        // Returns a boolean or NaN:
        //    true  : if d is between start and end (inclusive)
        //    false : if d is before start or after end
        //    NaN   : if one or more of the dates is illegal.
        // NOTE: The code inside isFinite does an assignment (=).
       return (
            isFinite(d=this.convert(d).valueOf()) &&
            isFinite(start=this.convert(start).valueOf()) &&
            isFinite(end=this.convert(end).valueOf()) ?
            start <= d && d <= end :
            NaN
        );
    }
}

  • (a > b) - (a < b) ist nützlich zum Sortieren von Datenarrays

    – nktssh

    14. Mai 2015 um 9:26 Uhr

  • schrecklich langsam 🙂 Ich bevorzuge x.getTime() === y.getTime() Methode, sowohl lesbar als auch extrem schnell zu sehen jsperf

    – huysentruitw

    12. Dezember 2013 um 9:56 Uhr

  • Die + Operator versucht, den Ausdruck in eine Zahl umzuwandeln. Date.valueOf() wird für die Konvertierung verwendet (was dasselbe zurückgibt wie Date.getTime().

    – Salmann A

    20. Januar 2014 um 9:30 Uhr

  • @Daniel < und <= denselben Algorithmus verwenden (abstrakter relationaler Vergleich), ebenfalls für > und >=. Die Antwort war beliebt, aber falsch. Bitte korrigieren Sie die erste Zeile, die ich vergessen habe zu bearbeiten.

    – Salmann A

    29. Oktober 2021 um 10:13 Uhr

1646878511 54 Vergleichen Sie zwei Daten mit JavaScript
Salmann A

Die Vergleichsoperatoren < <= > >= kann verwendet werden, um JavaScript-Daten zu vergleichen:

var d1 = new Date(2013, 0, 1);
var d2 = new Date(2013, 0, 2);
d1 <  d2; // true
d1 <= d2; // true
d1 >  d2; // false
d1 >= d2; // false

Allerdings sind die Gleichheitsoperatoren == != === !== kann nicht verwendet werden, um (den Wert von) Daten zu vergleichen da:

  • Zwei unterschiedliche Objekte sind weder für strenge noch für abstrakte Vergleiche gleich.
  • Ein Ausdruck, der Objekte vergleicht, ist nur wahr, wenn die Operanden auf dasselbe Objekt verweisen.

Sie können den Wert von Daten auf Gleichheit mit einer der folgenden Methoden vergleichen:

var d1 = new Date(2013, 0, 1);
var d2 = new Date(2013, 0, 1);
/*
 * note: d1 == d2 returns false as described above
 */
d1.getTime() == d2.getTime(); // true
d1.valueOf() == d2.valueOf(); // true
Number(d1)   == Number(d2);   // true
+d1          == +d2;          // true

Beide Date.getTime() und Date.valueOf() Gibt die Anzahl der Millisekunden seit dem 1. Januar 1970, 00:00 UTC zurück. Beide Number Funktion und unär + Betreiber nennen die valueOf() Methoden hinter den Kulissen.

Vergleichen Sie zwei Daten mit JavaScript
Narendra Jadhav

Die bei weitem einfachste Methode besteht darin, ein Datum vom anderen zu subtrahieren und das Ergebnis zu vergleichen.

var oDateOne = new Date();
var oDateTwo = new Date();

alert(oDateOne - oDateTwo === 0);
alert(oDateOne - oDateTwo < 0);
alert(oDateOne - oDateTwo > 0);

Vergleichen Termine in JavaScript ist ganz einfach … JavaScript hat eingebaut Vergleichssystem für Termine was den Vergleich so einfach macht…

Befolgen Sie einfach diese Schritte, um 2 Datumswerte zu vergleichen, zum Beispiel haben Sie 2 Eingaben, die jeweils einen Datumswert enthalten String und du sie vergleichst…

1. Sie haben 2 String-Werte, die Sie von einer Eingabe erhalten, und Sie möchten sie vergleichen, sie sind wie folgt:

var date1 = '01/12/2018';
var date2 = '12/12/2018';

2. Sie müssen es sein Date Object als Datumswerte verglichen werden sollen, wandeln Sie sie also einfach mit in Datum um new Date()ich weise sie nur zur Vereinfachung der Erklärung neu zu, aber Sie können es tun, wie Sie möchten:

date1 = new Date(date1);
date2 = new Date(date2);

3. Vergleichen Sie sie jetzt einfach mit dem > < >= <=

date1 > date2;  //false
date1 < date2;  //true
date1 >= date2; //false
date1 <= date2; //true

daten in javascript vergleichen

985640cookie-checkVergleichen Sie zwei Daten mit JavaScript

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy