it-swarm.com.de

Vergleichen Sie zwei Daten mit JavaScript

Kann jemand eine Möglichkeit vorschlagen, die Werte von zwei Daten größer als, kleiner als und nicht in der Vergangenheit mit JavaScript zu vergleichen? Die Werte werden aus Textfeldern stammen.

1707
Alex

Das Date-Objekt wird tun, was Sie wollen - konstruieren Sie eines für jedes Datum und vergleichen Sie es dann mit dem >, <, <= oder >= .

Für die Operatoren ==, !=, === und !== müssen Sie date.getTime() wie in verwenden

var d1 = new Date();
var d2 = new Date(d1);
var same = d1.getTime() === d2.getTime();
var notSame = d1.getTime() !== d2.getTime();

um klar zu sein, wird es nicht funktionieren, direkt mit den Datenobjekten auf Gleichheit zu prüfen

var d1 = new Date();
var d2 = new Date(d1);

console.log(d1 == d2);   // prints false (wrong!) 
console.log(d1 === d2);  // prints false (wrong!)
console.log(d1 != d2);   // prints true  (wrong!)
console.log(d1 !== d2);  // prints true  (wrong!)
console.log(d1.getTime() === d2.getTime()); // prints true (correct)

Ich schlage vor, dass Sie Dropdown-Listen oder eine ähnliche eingeschränkte Form der Datumseingabe anstelle von Textfeldern verwenden, damit Sie sich nicht in der Hölle der Eingabevalidierung befinden.

1944
moonshadow

Der einfachste Weg, Daten in Javascript zu vergleichen, besteht darin, sie zuerst in ein Date-Objekt zu konvertieren und dann diese Datumsobjekte zu vergleichen.

Unten finden Sie ein Objekt mit drei Funktionen:

  • termine.vergleiche (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 ungültiges Datum ist
  • dates.inRange (d, start, end)

    Gibt einen Booleschen Wert oder NaN zurück:

    • true if d is between the start ​​and end (inclusive)
    • false if d is before start ​​or after end.
    • NaN, wenn eines oder mehrere der Daten ungültig sind.
  • dates.convert

    Wird von den anderen Funktionen verwendet, um deren Eingabe in ein Datumsobjekt zu konvertieren. Die Eingabe kann sein

    • a Datum - Objekt: Die Eingabe wird unverändert zurückgegeben.
    • an Array: Interpretiert als [Jahr, Monat, Tag]. NOTE month is 0-11.
    • a Anzahl: Interpretiert als Anzahl der Millisekunden seit dem 1. Januar 1970 (ein Zeitstempel)
    • a Zeichenfolge: Es werden verschiedene Formate unterstützt, z. B. "JJJJ/MM/TT", "MM/TT/JJJJ", "31. Januar 2009" usw.
    • an Objekt: Wird als Objekt mit den Attributen Jahr, Monat und Datum interpretiert. NOTE month is 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
        );
    }
}
399
some

Vergleichen Sie < und > wie gewohnt, aber alles, was = betrifft, sollte ein +-Präfix verwenden. Wie so:

var x = new Date('2013-05-23');
var y = new Date('2013-05-23');

// less than, greater than is fine:
x < y; => false
x > y; => false
x === y; => false, oops!

// anything involving '=' should use the '+' prefix
// it will then compare the dates' millisecond values
+x <= +y;  => true
+x >= +y;  => true
+x === +y; => true

Hoffe das hilft!

255

Die Vergleichsoperatoren _<_ _<=>>=_ können zum Vergleichen von JavaScript-Daten verwendet werden:

_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
_

Die Gleichheitsoperatoren _==_ _!====!==_ können jedoch nicht zum Vergleichen (des Werts von) Datumsangaben verwendet werden weil :

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

Sie können den Wert von Daten für die 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() geben die Anzahl der Millisekunden seit dem 1. Januar 1970, 00:00 UTC zurück. Beide Operatoren, Number function und unary _+_, rufen die valueOf() -Methoden hinter den Kulissen auf.

137
Salman A

Mit Abstand am einfachsten ist es, 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);
74
Peter Wilkinson

Das Vergleichen von Daten in JavaScript ist ganz einfach ... JavaScript hat eingebaute Vergleichssystem für Daten , das den Vergleich so einfach macht ...

Befolgen Sie einfach diese Schritte, um 2 Datumswerte zu vergleichen. Sie haben beispielsweise 2 Eingänge, von denen jeder einen Datumswert in String hat, und Sie können sie vergleichen ...

1. Sie haben 2 Zeichenfolgenwerte, die Sie von einer Eingabe erhalten und die Sie vergleichen möchten. Diese sind wie folgt:

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

2. Sie müssen _Date Object_ sein, um als Datumswerte verglichen zu werden. Konvertieren Sie sie einfach mit new Date() in Datum. Ich habe sie der Einfachheit halber nur neu zugewiesen, aber Sie können es trotzdem 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
_

compare dates in javascript

61
Alireza

Nur Tag vergleichen (Zeitkomponente wird ignoriert):

Date.prototype.sameDay = function(d) {
  return this.getFullYear() === d.getFullYear()
    && this.getDate() === d.getDate()
    && this.getMonth() === d.getMonth();
}

Verwendungszweck:

if(date1.sameDay(date2)) {
    // highlight day on calendar or something else clever
}
33
mpen

welches format?

Wenn Sie ein Javascript Date-Objekt erstellen, können Sie sie einfach subtrahieren, um eine Millisekunden-Differenz zu erhalten (editieren: oder einfach vergleichen):

js>t1 = new Date()
Thu Jan 29 2009 14:19:28 GMT-0500 (Eastern Standard Time)
js>t2 = new Date()
Thu Jan 29 2009 14:19:31 GMT-0500 (Eastern Standard Time)
js>t2-t1
2672
js>t3 = new Date('2009 Jan 1')
Thu Jan 01 2009 00:00:00 GMT-0500 (Eastern Standard Time)
js>t1-t3
2470768442
js>t1>t3
true
30
Jason S

KURZE ANTWORT

Hier ist eine Funktion, die {boolean} zurückgibt, wenn von dateTime> bis dateTime Demo in Aktion

var from = '08/19/2013 00:00'
var to = '08/12/2013 00:00 '

function isFromBiggerThanTo(dtmfrom, dtmto){
   return new Date(dtmfrom).getTime() >=  new Date(dtmto).getTime() ;
}
console.log(isFromBiggerThanTo(from, to)); //true

Erklärung

jsFiddle

var date_one = '2013-07-29 01:50:00',
date_two = '2013-07-29 02:50:00';
//getTime() returns the number of milliseconds since 01.01.1970.
var timeStamp_date_one = new Date(date_one).getTime() ; //1375077000000 
console.log(typeof timeStamp_date_one);//number 
var timeStamp_date_two = new Date(date_two).getTime() ;//1375080600000 
console.log(typeof timeStamp_date_two);//number 

da Sie jetzt beide datetime im Zahlentyp haben, können Sie sie mit beliebigen Vergleichsoperationen vergleichen

(>, <, =,! =, ==,! ==,> = AND <=)

Dann

wenn Sie mit C# Custom Date and Time Format String vertraut sind, sollte diese Bibliothek genau das Gleiche tun und Ihnen dabei helfen, Datum und Uhrzeit zu formatieren dtmFRM ob Sie eine Datums-Zeit-Zeichenfolge oder ein Unix übergeben Format

Verwendung

var myDateTime = new dtmFRM();

alert(myDateTime.ToString(1375077000000, "MM/dd/yyyy hh:mm:ss ampm"));
//07/29/2013 01:50:00 AM

alert(myDateTime.ToString(1375077000000,"the year is yyyy and the day is dddd"));
//this year is 2013 and the day is Monday

alert(myDateTime.ToString('1/21/2014', "this month is MMMM and the day is dd"));
//this month is january and the day is 21

DEMO

alles, was Sie tun müssen, ist, eines dieser Formate zu übergeben, das in der Datei library js pacified ist

16
Mina Gabriel

sie verwenden diesen Code,

var firstValue = "2012-05-12".split('-');
var secondValue = "2014-07-12".split('-');

 var firstDate=new Date();
 firstDate.setFullYear(firstValue[0],(firstValue[1] - 1 ),firstValue[2]);

 var secondDate=new Date();
 secondDate.setFullYear(secondValue[0],(secondValue[1] - 1 ),secondValue[2]);     

  if (firstDate > secondDate)
  {
   alert("First Date  is greater than Second Date");
  }
 else
  {
    alert("Second Date  is greater than First Date");
  }

Und überprüfen Sie auch diesen Link http://www.w3schools.com/js/js_obj_date.asp

16
stay_hungry
function datesEqual(a, b)
{
   return (!(a>b || b>a))
}
13
sky

Hinweis - Nur Datumsteil vergleichen:

Wenn wir zwei Datum in Javascript vergleichen. Es werden auch Stunden, Minuten und Sekunden berücksichtigt. Wenn wir also nur das Datum vergleichen müssen, ist dies der Ansatz:

var date1= new Date("01/01/2014").setHours(0,0,0,0);

var date2= new Date("01/01/2014").setHours(0,0,0,0);

Jetzt: if date1.valueOf()> date2.valueOf() wird wie ein Zauber wirken.

13
Sanjeev Singh
var date = new Date(); // will give you todays date.

// following calls, will let you set new dates.
setDate()   
setFullYear()   
setHours()  
setMilliseconds()   
setMinutes()    
setMonth()  
setSeconds()    
setTime()

var yesterday = new Date();
yesterday.setDate(...date info here);

if(date>yesterday)  // will compare dates
13
Paul Woolcock

Um den vielen vorhandenen Optionen noch eine weitere Möglichkeit hinzuzufügen, können Sie versuchen:

if (date1.valueOf()==date2.valueOf()) .....

... was bei mir zu funktionieren scheint. Natürlich müssen Sie sicherstellen, dass beide Daten nicht undefiniert sind ...

if ((date1?date1.valueOf():0)==(date2?date2.valueOf():0) .....

Auf diese Weise können wir sicherstellen, dass ein positiver Vergleich durchgeführt wird, wenn auch beide undefiniert sind, oder ...

if ((date1?date1.valueOf():0)==(date2?date2.valueOf():-1) .....

... wenn Sie möchten, dass sie nicht gleich sind.

11
Paul

Über Moment.js

Jsfiddle: http://jsfiddle.net/guhokemk/1/

function compare(dateTimeA, dateTimeB) {
    var momentA = moment(dateTimeA,"DD/MM/YYYY");
    var momentB = moment(dateTimeB,"DD/MM/YYYY");
    if (momentA > momentB) return 1;
    else if (momentA < momentB) return -1;
    else return 0;
}

alert(compare("11/07/2015", "10/07/2015"));

Die Methode gibt 1 zurück, wenn dateTimeA größer als dateTimeB ist.

Die Methode gibt 0 zurück, wenn dateTimeA gleich dateTimeB ist.

Die Methode gibt -1 zurück, wenn dateTimeA kleiner als dateTimeB ist.

10
Razan Paul

ACHTUNG ZEITZONE

Ein Javascript-Datum hat keine Vorstellung von der Zeitzone . Es ist ein Moment in der Zeit (Ticks seit der Epoche) mit praktischen Funktionen zum Übersetzen in und von Strings in der "lokalen" Zeitzone. Wenn Sie mit Datumsangaben mithilfe von Datumsobjekten arbeiten möchten , möchten Sie, dass Ihre Datumsangaben zu Beginn des betreffenden Datums UTC-Mitternacht darstellen. Dies ist eine gängige Vorgehensweise und notwendige Konventionen, mit denen Sie mit Datumsangaben arbeiten können, unabhängig von der Jahreszeit oder Zeitzone ihrer Erstellung. Sie müssen daher sehr wachsam sein, um den Begriff der Zeitzone zu verwalten, insbesondere wenn Sie ein UTC-Datumsobjekt mit Mitternacht erstellen.

In den meisten Fällen möchten Sie, dass Ihr Datum die Zeitzone des Benutzers widerspiegelt. Klicken Sie, wenn heute Ihr Geburtstag ist . Benutzer in Neuseeland und den USA klicken gleichzeitig und erhalten unterschiedliche Daten. In diesem Fall tun Sie dies ...

// create a date (utc midnight) reflecting the value of myDate and the environment's timezone offset.
new Date(Date.UTC(myDate.getFullYear(),myDate.getMonth(), myDate.getDate()));

Manchmal ist internationale Vergleichbarkeit wichtiger als lokale Genauigkeit. In diesem Fall tun Sie dies ...

// the date in London of a moment in time. Device timezone is ignored.
new Date(Date.UTC(myDate.getUTCYear(), myDate.getyUTCMonth(), myDate.getUTCDate()));

Jetzt können Sie Ihre Datumsobjekte direkt vergleichen, wie in den anderen Antworten vorgeschlagen.

Nachdem Sie beim Erstellen auf die Verwaltung der Zeitzone geachtet haben, müssen Sie auch sicherstellen, dass die Zeitzone nicht angezeigt wird, wenn Sie wieder in eine Zeichenfolgendarstellung konvertieren. So können Sie sicher verwenden ...

  • toISOString()
  • getUTCxxx()
  • getTime() //returns a number with no time or timezone.
  • .toLocaleDateString("fr",{timezone:"UTC"}) // whatever locale you want, but ALWAYS UTC.

Und meide alles andere, besonders ...

  • getYear(), getMonth(), getDate()
9
bbsimonbb

Subtrahieren Sie zwei Datumsangaben, um die Differenz in Millisekunden zu erhalten. Wenn Sie 0 erhalten, ist dies das gleiche Datum

function areSameDate(d1, d2){
    return d1 - d2 === 0
}
8
Yukulélé

Zum Vergleich von zwei Daten können wir die JavaScript-Bibliothek date.js verwenden, die unter folgender Adresse zu finden ist: https://code.google.com/archive/p/datejs/downloads

verwenden Sie die Methode Date.compare( Date date1, Date date2 ) und geben Sie eine Zahl zurück, die das folgende Ergebnis ergibt:

-1 = Datum1 ist kleiner als Datum2.

0 = Werte sind gleich.

1 = Datum1 ist größer als Datum2.

8
Salahin Rocky

Um Daten aus freiem Text in Javascript zu erstellen, müssen Sie diese in das Date () -Objekt analysieren.

Sie könnten Date.parse () verwenden, das freien Text verwendet, um ihn in ein neues Datum umzuwandeln. Wenn Sie jedoch die Kontrolle über die Seite haben, würde ich empfehlen, stattdessen HTML-Auswahlfelder oder eine Datumsauswahl wie das YUI-Kalendersteuerelement) zu verwenden oder jQuery UI Datepicker .

Wenn Sie ein Datum haben, auf das andere hingewiesen haben, können Sie die Daten mit einfachen Berechnungen subtrahieren und in eine Anzahl von Tagen umrechnen, indem Sie die Anzahl (in Sekunden) durch die Anzahl der Sekunden pro Tag (60 * 60 *) dividieren. 24 = 86400).

7
sh1mmer

Angenommen, Sie haben die Datumsobjekte A und B, erhalten ihren EPOCH-Zeitwert und subtrahieren dann, um die Differenz in Millisekunden zu erhalten.

var diff = +A - +B;

Das ist alles.

7
foobar
var date_today=new Date();
var formated_date = formatDate(date_today);//Calling formatDate Function

var input_date="2015/04/22 11:12 AM";

var currentDateTime = new Date(Date.parse(formated_date));
var inputDateTime   = new Date(Date.parse(input_date));

if (inputDateTime <= currentDateTime){
    //Do something...
}

function formatDate(date) {
    var hours = date.getHours();
    var minutes = date.getMinutes();
    var ampm = hours >= 12 ? 'PM' : 'AM';

    hours = hours % 12;
    hours = hours ? hours : 12; // the hour '0' should be '12'
    hours   = hours < 10 ? '0'+hours : hours ;

    minutes = minutes < 10 ? '0'+minutes : minutes;

    var strTime = hours+":"+minutes+ ' ' + ampm;
    return  date.getFullYear()+ "/" + ((date.getMonth()+1) < 10 ? "0"+(date.getMonth()+1) :
    (date.getMonth()+1) ) + "/" + (date.getDate() < 10 ? "0"+date.getDate() :
    date.getDate()) + " " + strTime;
}
6
vickisys

Normalerweise speichere ich Dates als timestamps(Number) in Datenbanken.

Wenn ich vergleichen muss, vergleiche ich einfach zwischen diesen Zeitstempeln oder

konvertiere es in ein Datumsobjekt und vergleiche es dann mit > <, falls nötig.

Beachten Sie, dass == oder === nur dann ordnungsgemäß funktioniert, wenn Ihre Variablen Referenzen desselben Datumsobjekts sind.

Konvertieren Sie diese Date-Objekte zuerst in einen Zeitstempel (Zahl) und vergleichen Sie dann deren Gleichheit.


Datum bis Zeitstempel

var timestamp_1970 = new Date(0).getTime(); // 1970-01-01 00:00:00
var timestamp = new Date().getTime(); // Current Timestamp

Zeitstempel auf Datum

var timestamp = 0; // 1970-01-01 00:00:00
var DateObject = new Date(timestamp);
5
InspiredJW

Eine verbesserte Version des Codes von "some"

/* Compare the current date against another date.
 *
 * @param b  {Date} the other date
 * @returns   -1 : if this < b
 *             0 : if this === b
 *             1 : if this > b
 *            NaN : if a or b is an illegal date
*/ 
Date.prototype.compare = function(b) {
  if (b.constructor !== Date) {
    throw "invalid_date";
  }

 return (isFinite(this.valueOf()) && isFinite(b.valueOf()) ? 
          (this>b)-(this<b) : NaN 
        );
};

verwendungszweck:

  var a = new Date(2011, 1-1, 1);
  var b = new Date(2011, 1-1, 1);
  var c = new Date(2011, 1-1, 31);
  var d = new Date(2011, 1-1, 31);

  assertEquals( 0, a.compare(b));
  assertEquals( 0, b.compare(a));
  assertEquals(-1, a.compare(c));
  assertEquals( 1, c.compare(a));

Wenn Folgendes Ihr Datumsformat ist, können Sie diesen Code verwenden:

var first = '2012-11-21';
var second = '2012-11-03';
if(parseInt(first.replace(/-/g,""),10) > parseInt(second.replace(/-/g,""),10)){
   //...
}

Es wird geprüft, ob die 20121121 -Nummer größer als 20121103 ist oder nicht.

4
totten

Setzen Sie vor dem Vergleichen des Objekts Dates beide Millisekunden wie Date.setMilliseconds(0); auf Null.

In einigen Fällen, in denen das Date -Objekt dynamisch in Javascript erstellt wird, werden die Millisekunden geändert, wenn Sie das Date.getTime() -Objekt weiterhin drucken, wodurch die Gleichheit beider Daten verhindert wird.

2
Júlio Paulillo
        from_date ='10-07-2012';
        to_date = '05-05-2012';
        var fromdate = from_date.split('-');
        from_date = new Date();
        from_date.setFullYear(fromdate[2],fromdate[1]-1,fromdate[0]);
        var todate = to_date.split('-');
        to_date = new Date();
        to_date.setFullYear(todate[2],todate[1]-1,todate[0]);
        if (from_date > to_date ) 
        {
            alert("Invalid Date Range!\nStart Date cannot be after End Date!")

            return false;
        }

Verwenden Sie diesen Code, um das Datum mit Javascript zu vergleichen.

Vielen Dank, D.Jeeva

1
Jeeva

Eine andere Möglichkeit, zwei Daten zu vergleichen, ist die Methode toISOString() . Dies ist besonders nützlich, wenn Sie ein festes Datum in einer Zeichenfolge vergleichen, da Sie vermeiden können, ein kurzlebiges Objekt zu erstellen. Dank des ISO 8601-Formats können Sie diese Zeichenfolgen lexikografisch vergleichen (zumindest wenn Sie dieselbe Zeitzone verwenden).

Ich sage nicht unbedingt, dass es besser ist, Zeitobjekte oder Zeitstempel zu verwenden. Dies nur als eine weitere Option anzubieten. Es könnte Edge-Fälle geben, in denen dies fehlschlagen könnte, aber ich bin noch nicht auf sie gestoßen :)

1
yoniLavi
var curDate=new Date();
var startDate=document.forms[0].m_strStartDate;

var endDate=document.forms[0].m_strEndDate;
var startDateVal=startDate.value.split('-');
var endDateVal=endDate.value.split('-');
var firstDate=new Date();
firstDate.setFullYear(startDateVal[2], (startDateVal[1] - 1), startDateVal[0]);

var secondDate=new Date();
secondDate.setFullYear(endDateVal[2], (endDateVal[1] - 1), endDateVal[0]);
if(firstDate > curDate) {
    alert("Start date cannot be greater than current date!");
    return false;
}
if (firstDate > secondDate) {
    alert("Start date cannot be greater!");
    return false;
}
1
user1931504

Der einfache Weg ist,

var first = '2012-11-21';
var second = '2012-11-03';

if (new Date(first) > new Date(second) {
    .....
}
1
MICHAEL PRABHU

Folgendes habe ich in einem meiner Projekte getan:

function CompareDate(tform){
     var startDate = new Date(document.getElementById("START_DATE").value.substring(0,10));
     var endDate = new Date(document.getElementById("END_DATE").value.substring(0,10));

     if(tform.START_DATE.value!=""){
         var estStartDate = tform.START_DATE.value;
         //format for Oracle
         tform.START_DATE.value = estStartDate + " 00:00:00";
     }

     if(tform.END_DATE.value!=""){
         var estEndDate = tform.END_DATE.value;
         //format for Oracle
         tform.END_DATE.value = estEndDate + " 00:00:00";
     }

     if(endDate <= startDate){
         alert("End date cannot be smaller than or equal to Start date, please review you selection.");
         tform.START_DATE.value = document.getElementById("START_DATE").value.substring(0,10);
         tform.END_DATE.value = document.getElementById("END_DATE").value.substring(0,10);
         return false;
     }
}

aufruf dieses Formulars onsubmit. hoffe das hilft.

1
Brijesh

Hallo, hier ist mein Code zum Vergleichen von Daten. In meinem Fall mache ich eine Prüfung, um nicht zu erlauben, vergangene Daten vorzuwählen.

var myPickupDate = <pick up date> ;
var isPastPickupDateSelected = false;
var currentDate = new Date();

if(currentDate.getFullYear() <= myPickupDate.getFullYear()){
    if(currentDate.getMonth()+1 <= myPickupDate.getMonth()+1 || currentDate.getFullYear() < myPickupDate.getFullYear()){
                        if(currentDate.getDate() <= myPickupDate.getDate() || currentDate.getMonth()+1 < myPickupDate.getMonth()+1 || currentDate.getFullYear() < myPickupDate.getFullYear()){
                                            isPastPickupDateSelected = false;
                                            return;
                                        }
                    }
}
console.log("cannot select past pickup date");
isPastPickupDateSelected = true;
1
Qasim

Angenommen, Sie haben es mit diesem 2014[:-/.]06[:-/.]06 oder diesem 06[:-/.]06[:-/.]2014 Datumsformat zu tun, dann können Sie die Daten auf diese Weise vergleichen

var a = '2014.06/07', b = '2014-06.07', c = '07-06/2014', d = '07/06.2014';

parseInt(a.replace(/[:\s\/\.-]/g, '')) == parseInt(b.replace(/[:\s\/\.-]/g, '')); // true
parseInt(c.replace(/[:\s\/\.-]/g, '')) == parseInt(d.replace(/[:\s\/\.-]/g, '')); // true
parseInt(a.replace(/[:\s\/\.-]/g, '')) < parseInt(b.replace(/[:\s\/\.-]/g, '')); // false
parseInt(c.replace(/[:\s\/\.-]/g, '')) > parseInt(d.replace(/[:\s\/\.-]/g, '')); // false

Wie Sie sehen, entfernen wir Trennzeichen und vergleichen dann ganze Zahlen.

1
hex494D49

Sie können das Datum so einfach und verständlich wie möglich vergleichen.

<input type="date" id="getdate1" />
<input type="date" id="getdate2" />

nehmen wir an, Sie haben zwei Dateneingaben, die Sie vergleichen möchten.

schreiben Sie also zunächst eine übliche Methode, um das Datum zu analysieren.

 <script type="text/javascript">
            function parseDate(input) {
             var datecomp= input.split('.'); //if date format 21.09.2017

              var tparts=timecomp.split(':');//if time also giving
              return new Date(dparts[2], dparts[1]-1, dparts[0], tparts[0], tparts[1]);
// here new date(  year, month, date,)
            }
        </script>

parseDate () ist die häufig verwendete Methode zum Parsen des Datums. Jetzt können Sie Ihr Datum überprüfen =,>, <jede Art von Vergleich

    <script type="text/javascript">

              $(document).ready(function(){
              //parseDate(pass in this method date);
                    Var Date1=parseDate($("#getdate1").val());
                        Var Date2=parseDate($("#getdate2").val());
               //use any oe < or > or = as per ur requirment 
               if(Date1 = Date2){
         return false;  //or your code {}
}
 });
    </script>

Sicher, dieser Code wird Ihnen helfen.

0
Bachas