Confrontando la parte della data solo senza confrontare l'ora in JavaScript


397

Cosa c'è di sbagliato nel codice qui sotto?

Forse sarebbe più semplice confrontare la data e non l'ora. Neanche io sono sicuro di come farlo, e ho cercato, ma non sono riuscito a trovare il mio esatto problema.

A proposito, quando visualizzo le due date in un avviso, mostrano esattamente lo stesso.

Il mio codice:

window.addEvent('domready', function() {
    var now = new Date();
    var input = $('datum').getValue();
    var dateArray = input.split('/');
    var userMonth = parseInt(dateArray[1])-1;
    var userDate = new Date();
    userDate.setFullYear(dateArray[2], userMonth, dateArray[0], now.getHours(), now.getMinutes(), now.getSeconds(), now.getMilliseconds());

    if (userDate > now)
    {
        alert(now + '\n' + userDate);
    }
});

Esiste un modo più semplice per confrontare le date e non includere l'ora?

Risposte:


781

Sto ancora imparando JavaScript e l'unico modo in cui ho trovato quello che funziona per me per confrontare due date senza l'ora è usare il setHoursmetodo dell'oggetto Date e impostare zero, minuti, secondi e millisecondi. Quindi confrontare le due date.

Per esempio,

date1 = new Date()
date2 = new Date(2011,8,20)

date2verrà impostato con ore, minuti, secondi e millisecondi su zero, ma date1 li avrà impostati sull'ora in cui è stato creato date1. Per eliminare ore, minuti, secondi e millisecondi alla data1, procedi come segue:

date1.setHours(0,0,0,0)

Ora puoi confrontare le due date solo come DATE senza preoccuparti degli elementi del tempo.


63
Si prega di essere consapevoli del fatto che il test date1 === date2non sembra fornire un comportamento coerente; è meglio fare date1.valueOf() === b.valueOf()o anche date1.getTime() === date2.getTime(). Stranezza.
Erwin Wessels,

4
Fai attenzione: se date1 e date2 sono in inverno e in estate e prevedi di scorrere l'una dall'altra con addDays (1), il problema è che non avranno lo stesso fuso orario a causa dell'ora legale, quindi l'ultimo il confronto che dovrebbe dare date uguali non funzionerà perché le due date non sono realmente a 00: 00: 00: 0.
Oliver

9
So che questa è una vecchia domanda, ma viene prima di tutto in Google durante la ricerca. Stai attento con questa risposta. Ciò fornirà risposte errate se l'utente non si trova nello stesso fuso orario del creatore dell'oggetto Date. Ad esempio, modifica il fuso orario sul sistema operativo del tuo computer sull'ora della costa orientale (USA). Apri la console del browser e digita var date2 = new Date(2011,8,20). Ora cambia il fuso orario del sistema operativo in Pacific Time (US). Nello stesso tipo di console del browser date2.toDateString(), tornerai Mon Sep 19 2011anziché martedì 20!
Adam,

9
Si noti inoltre che setHours()imposta l'ora in base al fuso orario corrente, rilevato automaticamente dal browser. Prova: t = new Date("2016-02-29T01:45:49.098Z"); t.setHours(0,0,0,0); console.log(t.toJSON());stamperà "2016-02-28T15:00:00.000Z", data 28, ma non 29 Il mio fuso orario attuale èAsia/Tokyo
transang

8
Questa risposta dovrebbe davvero essere aggiornata per utilizzare i setUTCxxxmetodi anziché le varianti locali / timezone.
Stijn de Witt,

136

ATTENZIONE AL FUSO ORARIO

L'utilizzo dell'oggetto date per rappresentare subito una data ti mette in un enorme problema di precisione in eccesso. È necessario gestire il tempo e il fuso orario per tenerli fuori e possono rientrare di soppiatto in qualsiasi momento. La risposta accettata a questa domanda cade nella trappola.

Una data javascript non ha nozione di fuso orario . È un momento nel tempo (segni di spunta dall'epoca) con pratiche funzioni (statiche) per la traduzione da e verso le stringhe, utilizzando di default il fuso orario "locale" del dispositivo o, se specificato, UTC o un altro fuso orario. Per rappresentare just-a-date ™ con un oggetto data, si desidera che le date rappresentino la mezzanotte UTC all'inizio della data in questione. Questa è una convenzione comune e necessaria che ti consente di lavorare con le date indipendentemente dalla stagione o dal fuso orario della loro creazione. Quindi è necessario essere molto vigili per gestire la nozione di fuso orario, sia quando si crea l'oggetto Data UTC di mezzanotte, sia quando lo si serializza.

Molte persone sono confuse dal comportamento predefinito della console. Se si spruzza una data sulla console, l'output visualizzato includerà il fuso orario. Questo perché la console chiama toString()il tuo appuntamento e toString()ti dà una rappresentazione locale. La data sottostante non ha fuso orario ! (Fintanto che l'ora corrisponde all'offset del fuso orario, hai ancora un oggetto data UTC di mezzanotte)

Deserializzazione (o creazione di oggetti Data UTC di mezzanotte)

Questa è la fase di arrotondamento, con il trucco che ci sono due risposte "giuste". Il più delle volte, vorrai che la tua data rifletta il fuso orario dell'utente. Fai clic su se oggi è il tuo compleanno . Gli utenti in Nuova Zelanda e Stati Uniti fanno clic contemporaneamente e ottengono date diverse. In tal caso, fai questo ...

// 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()));

A volte, la comparabilità internazionale supera l'accuratezza locale. In tal caso, fai questo ...

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

Deserializzare una data

Spesso le date sul filo saranno nel formato AAAA-MM-GG. Per deserializzarli, fai questo ...

var midnightUTCDate = new Date( dateString + 'T00:00:00Z');

serializzazione

Avendo cura di gestire il fuso orario durante la creazione, ora è necessario essere sicuri di mantenere il fuso orario fuori quando si converte nuovamente in una rappresentazione di stringa. Quindi puoi usare tranquillamente ...

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

Ed evita totalmente tutto il resto, specialmente ...

  • getYear(), getMonth(),getDate()

Quindi, per rispondere alla tua domanda, 7 anni in ritardo ...

<input type="date" onchange="isInPast(event)">
<script>
var isInPast = function(event){
  var userEntered = new Date(event.target.valueAsNumber); // valueAsNumber has no time or timezone!
  var now = new Date();
  var today = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate() ));
  if(userEntered.getTime() < today.getTime())
    alert("date is past");
  else if(userEntered.getTime() == today.getTime())
    alert("date is today");
  else
    alert("date is future");

}
</script>

Guardalo in esecuzione ...

Aggiornamento 2019 ... roba gratis ...

Data la popolarità di questa risposta, ho inserito tutto nel codice. La seguente funzione restituisce un oggetto data spostato ed espone solo quelle funzioni che sono sicure da usare con just-a-date ™.

Chiamalo con un oggetto Date e si risolverà in JustADate in base al fuso orario dell'utente. Chiamalo con una stringa: se la stringa è ISO 8601 con il fuso orario specificato, completeremo semplicemente la parte temporale. Se il fuso orario non è specificato, lo convertiremo in una data che riflette il fuso orario locale, proprio come per gli oggetti data.

function JustADate(initDate){
  var utcMidnightDateObj = null
  // if no date supplied, use Now.
  if(!initDate)
    initDate = new Date();

  // if initDate specifies a timezone offset, or is already UTC, just keep the date part, reflecting the date _in that timezone_
  if(typeof initDate === "string" && initDate.match(/((\+|-)\d{2}:\d{2}|Z)$/gm)){  
     utcMidnightDateObj = new Date( initDate.substring(0,10) + 'T00:00:00Z');
  } else {
    // if init date is not already a date object, feed it to the date constructor.
    if(!(initDate instanceof Date))
      initDate = new Date(initDate);
      // Vital Step! Strip time part. Create UTC midnight dateObj according to local timezone.
      utcMidnightDateObj = new Date(Date.UTC(initDate.getFullYear(),initDate.getMonth(), initDate.getDate()));
  }

  return {
    toISOString:()=>utcMidnightDateObj.toISOString(),
    getUTCDate:()=>utcMidnightDateObj.getUTCDate(),
    getUTCDay:()=>utcMidnightDateObj.getUTCDay(),
    getUTCFullYear:()=>utcMidnightDateObj.getUTCFullYear(),
    getUTCMonth:()=>utcMidnightDateObj.getUTCMonth(),
    setUTCDate:(arg)=>utcMidnightDateObj.setUTCDate(arg),
    setUTCFullYear:(arg)=>utcMidnightDateObj.setUTCFullYear(arg),
    setUTCMonth:(arg)=>utcMidnightDateObj.setUTCMonth(arg),
    addDays:(days)=>{
      utcMidnightDateObj.setUTCDate(utcMidnightDateObj.getUTCDate + days)
    },
    toString:()=>utcMidnightDateObj.toString(),
    toLocaleDateString:(locale,options)=>{
      options = options || {};
      options.timezone = "UTC";
      locale = locale || "en-EN";
      return utcMidnightDateObj.toLocaleDateString(locale,options)
    }
  }
}


// if initDate already has a timezone, we'll just use the date part directly
console.log(JustADate('1963-11-22T12:30:00-06:00').toLocaleDateString())


3
La tua risposta contiene informazioni davvero preziose! Sfortunatamente non hai aggiunto la risposta alla vera domanda di OP, impedendomi di votarla. Prova ad aggiungere un piccolo frammento di codice che risponda alla domanda di OP.
Stijn de Witt,

Ah ah ah @ '7 anni troppo tardi'! Mi piace il tuo stile user1585345! Hai ottenuto il mio voto!
Stijn de Witt,

Ho trovato utile questo. Nota che c'è un refuso nello snippet "comparabilità internazionale". Penso che dovrebbe essere: new Date (Date.UTC (myDate.getUTCFullYear (), myDate.getUTCMonth (), myDate.getUTCDate ()));
RikRak,

1
Vorrei poter votare questa risposta 100 volte !!!
Sнаđошƒаӽ

77

Cosa ne pensi di questo?

Date.prototype.withoutTime = function () {
    var d = new Date(this);
    d.setHours(0, 0, 0, 0);
    return d;
}

Ti consente di confrontare la parte della data in questo modo senza influire sul valore della tua variabile:

var date1 = new Date(2014,1,1);
new Date().withoutTime() > date1.withoutTime(); // true

Questa è di gran lunga la risposta più elegante al post originale. Non ho creato una funzione separata per i miei scopi, ho solo incluso le due righe di codice.
Danimal Reks,

25

Utilizzando Moment.js

Se hai la possibilità di includere una libreria di terze parti, vale sicuramente la pena dare un'occhiata a Moment.js . Rende il lavoro con Datee DateTimemolto, molto più semplice.

Ad esempio, vedendo se una Data viene dopo un'altra Data ma escludendo i loro orari, faresti qualcosa del genere:

var date1 = new Date(2016,9,20,12,0,0); // October 20, 2016 12:00:00
var date2 = new Date(2016,9,20,12,1,0); // October 20, 2016 12:01:00

// Comparison including time.
moment(date2).isAfter(date1); // => true

// Comparison excluding time.
moment(date2).isAfter(date1, 'day'); // => false

Il secondo parametro si passa in isAfterè la precisione per fare il confronto e può essere una qualsiasi delle year, month, week, day, hour, minuteo second.


4
ottenuto uno speedup 100x che passa da una soluzione momentjs a una soluzione Date () + sethours. amici attenti :-)
2c2c

@ 2c2c Interessante. Sicuramente buono per conoscere l'impatto delle prestazioni. Quante operazioni hai utilizzato per il tuo benchmark?
Joshua Pinter,

1
ero a circa 1 milione di confronti. non ha impostato un benchmark effettivo
2c2c

17

Basta confrontare usando .toDateString come di seguito:

new Date().toDateString();

Questo ti restituirà solo la parte della data e non l'ora o il fuso orario, in questo modo:

"Ven 03 feb 2017"

Quindi entrambe le date possono essere confrontate in questo formato allo stesso modo senza tempo parte di esso.


2
È un buon inizio, ma non consentirà confronti perché ora è una stringa. Per confrontare, cambiarlo di nuovo in un oggetto Date facendo new Date(new Date().toDateString());
Grid Trekkor,

@GridTrekkor Vero, ma se vuoi solo un rapido test sull'uguaglianza questa è la soluzione più semplice.
CM

8

Questa potrebbe essere una versione un po 'più pulita, inoltre tieni presente che dovresti sempre usare un radix quando usi parseInt.

window.addEvent('domready', function() {
    // Create a Date object set to midnight on today's date
    var today = new Date((new Date()).setHours(0, 0, 0, 0)),
    input = $('datum').getValue(),
    dateArray = input.split('/'),
    // Always specify a radix with parseInt(), setting the radix to 10 ensures that
    // the number is interpreted as a decimal.  It is particularly important with
    // dates, if the user had entered '09' for the month and you don't use a
    // radix '09' is interpreted as an octal number and parseInt would return 0, not 9!
    userMonth = parseInt(dateArray[1], 10) - 1,
    // Create a Date object set to midnight on the day the user specified
    userDate = new Date(dateArray[2], userMonth, dateArray[0], 0, 0, 0, 0);

    // Convert date objects to milliseconds and compare
    if(userDate.getTime() > today.getTime())
    {
            alert(today+'\n'+userDate);
    }
});

Controlla la pagina di analisi MDC per ulteriori informazioni su radix.

JSLint è un ottimo strumento per rilevare cose come una radice mancante e molte altre cose che possono causare errori oscuri e difficili da eseguire il debug. Ti costringe a utilizzare standard di codifica migliori in modo da evitare futuri mal di testa. Lo uso su ogni progetto JavaScript che codifico.


@EmKay Questo non dovrebbe essere un grosso problema ora poiché ES5 è abbastanza standard nella maggior parte dei browser e proibisce l'interpretazione ottale MA alcuni browser potrebbero ancora utilizzare la vecchia interpretazione ottale per motivi di compatibilità all'indietro, quindi continuerei a usare un radix per il prossimo futuro.
Codice inutile

Se si utilizzano interpretazioni ottali in modalità rigorosa, verranno generati errori, il che è positivo perché consente di trovare errori che potrebbero essere interpretati erroneamente.
Codice inutile


4

Se stai davvero confrontando la data solo con nessun componente temporale, un'altra soluzione che potrebbe sembrare sbagliata ma funziona ed evita tutti i Date()mal di testa di fuso orario e tempo è quella di confrontare la data della stringa ISO direttamente usando il confronto delle stringhe:

> "2019-04-22" <= "2019-04-23"
true
> "2019-04-22" <= "2019-04-22"
true
> "2019-04-22" <= "2019-04-21"
false
> "2019-04-22" === "2019-04-22"
true

È possibile ottenere la data corrente (data UTC, non necessariamente la data locale dell'utente) utilizzando:

> new Date().toISOString().split("T")[0]
"2019-04-22"

La mia tesi a favore di ciò è la semplicità del programmatore: è molto meno probabile che tu non riesca a gestire correttamente i dati e gli offset, probabilmente a costo della velocità (non ho confrontato le prestazioni)


Puoi anche fare new Date().toISOString().substr(0, 10) // "2019-04-22".
ventre,

Per la data locale (data non UTC) è possibile utilizzare new Date().toLocaleDateString() // "8/26/2019". Ma poi confrontare il testo non sarà accurato (come "8/26/2019" >= "9/29/2001"è falso). Quindi dovrai convertirlo new Date(new Date().toLocaleDateString())per confrontarlo accuratamente con un'altra Data.
ventre,

4

Usa toDateString () in entrambe le date. toDateString non include l'ora, quindi per 2 volte nella stessa data, i valori saranno uguali, come mostrato di seguito.

var d1 = new Date(2019,01,01,1,20)
var d2 = new Date(2019,01,01,2,20)
console.log(d1==d2) // false
console.log(d1.toDateString() == d2.toDateString()) // true

Ovviamente alcune delle preoccupazioni relative al fuso orario espresse altrove su questa domanda sono valide, ma in molti scenari non sono rilevanti.


1
Nel mio caso questa soluzione è molto migliore della risposta selezionata e delle risposte più votate. Si dice esplicitamente nel titolo "senza confrontare i tempi", questa soluzione fa esattamente così, risparmiando la necessità di impostare il tempo per manipolare il confronto. Per rispondere "L'evento X e l'evento Y si sono verificati lo stesso giorno" ha più senso confrontare solo la data, piuttosto che rispondere "Sono 00: 00: 00.00 AM della data dell'evento X esattamente lo stesso con 00:00: 00.00 della data dell'evento Y? " che è quello che fanno molti altri
risponditori

3

Questo è il modo in cui lo faccio:

var myDate  = new Date($('input[name=frequency_start]').val()).setHours(0,0,0,0);
var today   = new Date().setHours(0,0,0,0);
if(today>myDate){
    jAlert('Please Enter a date in the future','Date Start Error', function(){
        $('input[name=frequency_start]').focus().select();
    });
}

Attualmente lo uso in produzione e non ho alcun problema o incompatibilità del browser, ecc ... per quale motivo stai dicendo che getTime()è richiesto?
Fabrizio,

5
Si noti che setHours()modifica l'oggetto su cui viene chiamato e restituisce la data come numero di millisecondi (equivalente alla chiamata getTime()). Pertanto la tua todayvariabile non è un Dateoggetto come alcuni si aspetterebbero, ma in realtà è un numero intero di millisecondi. Come effetto collaterale, questo è il motivo per cui non è stato necessario chiamare getTime()prima del confronto, dal momento che hai già in modo oscuro.
Timothy Walters,

3

Dato che non vedo qui un approccio simile e non mi diverto a impostare h / m / s / ms su 0, poiché può causare problemi con una transizione accurata al fuso orario locale con dateoggetto modificato (presumo di sì), lasciatemi introdurre qui questo, scritto pochi istanti fa, funzione lil:

+: Facile da usare, esegue un confronto di base (confrontando giorno, mese e anno senza tempo)
-: sembra che questo sia un opposto completo del pensiero "out of the box".

function datecompare(date1, sign, date2) {
    var day1 = date1.getDate();
    var mon1 = date1.getMonth();
    var year1 = date1.getFullYear();
    var day2 = date2.getDate();
    var mon2 = date2.getMonth();
    var year2 = date2.getFullYear();
    if (sign === '===') {
        if (day1 === day2 && mon1 === mon2 && year1 === year2) return true;
        else return false;
    }
    else if (sign === '>') {
        if (year1 > year2) return true;
        else if (year1 === year2 && mon1 > mon2) return true;
        else if (year1 === year2 && mon1 === mon2 && day1 > day2) return true;
        else return false;
    }    
}

Uso:

datecompare(date1, '===', date2)per controllo di uguaglianza,
datecompare(date1, '>', date2)per controllo maggiore,
!datecompare(date1, '>', date2)per controllo minore o uguale

Inoltre, ovviamente, puoi cambiare date1e date2in alcuni punti per ottenere qualsiasi altro semplice confronto.


Uno bello, più un vantaggio, mi ha aiutato, ora spero che le conversioni iso non mordano, ahah, grazie.
edencorbin,

3

Un modo efficiente e corretto per confrontare le date è:

Math.floor(date1.getTime() / 86400000) > Math.floor(date2.getTime() / 86400000);

Ignora la parte temporale, funziona per diversi fusi orari e puoi confrontare anche per l'uguaglianza ==. 86400000 è il numero di millisecondi in un giorno ( = 24*60*60*1000).

Attenzione che l'operatore di uguaglianza non== dovrebbe mai essere usato per confrontare oggetti Date perché fallisce quando ci si aspetterebbe che un test di uguaglianza funzioni perché sta confrontando due oggetti Date (e non confronta le due date), ad esempio:

> date1;
outputs: Thu Mar 08 2018 00:00:00 GMT+1300

> date2;
outputs: Thu Mar 08 2018 00:00:00 GMT+1300

> date1 == date2;
outputs: false

> Math.floor(date1.getTime() / 86400000) == Math.floor(date2.getTime() / 86400000);
outputs: true

Note: se si confrontano gli oggetti Date con la parte temporale impostata su zero, è possibile utilizzare date1.getTime() == date2.getTime()ma non vale la pena l'ottimizzazione. È possibile utilizzare <, >, <=, o >=quando si confrontano Data oggetti direttamente perché questi operatori prima di convertire l'oggetto Date chiamando .valueOf()prima che l'operatore fa il confronto.


2

Dopo aver letto questa domanda abbastanza tempo dopo che è stata pubblicata, ho deciso di pubblicare un'altra soluzione, poiché non l'ho trovata abbastanza soddisfacente, almeno per le mie esigenze:

Ho usato qualcosa del genere:

var currentDate= new Date().setHours(0,0,0,0);

var startDay = new Date(currentDate - 86400000 * 2);
var finalDay = new Date(currentDate + 86400000 * 2);

In questo modo avrei potuto utilizzare le date nel formato che volevo elaborare successivamente. Ma questo era solo per il mio bisogno, ma ho deciso di pubblicarlo comunque, forse aiuterà qualcuno


1
Nota che la tua currentDatevariabile non è una data, è un numero di millisecondi dal 1970-01-01. Il setHours()metodo modifica l'oggetto data su cui viene chiamato e restituisce l'equivalente di getTime()(valore della data in millisecondi dal 1970-01-01).
Timothy Walters,

1

Assicurati di costruire userDatecon un anno a 4 cifre come setFullYear(10, ...) !== setFullYear(2010, ...).


1

Puoi usare un po 'di aritmetica con il totale di ms.

var date = new Date(date1);
date.setHours(0, 0, 0, 0);

var diff = date2.getTime() - date.getTime();
return diff >= 0 && diff < 86400000;

Mi piace questo perché non vengono effettuati aggiornamenti alle date originali e perfom più veloci della suddivisione e del confronto delle stringhe.

Spero che questo aiuto!


1

Questo JS cambierà il contenuto dopo la data impostata qui è la stessa cosa, ma su w3schools

date1 = new Date()
date2 = new Date(2019,5,2) //the date you are comparing

date1.setHours(0,0,0,0)

var stockcnt = document.getElementById('demo').innerHTML;
if (date1 > date2){
document.getElementById('demo').innerHTML="yes"; //change if date is > set date (date2)
}else{
document.getElementById('demo').innerHTML="hello"; //change if date is < set date (date2)
}
<p id="demo">hello</p> <!--What will be changed-->
<!--if you check back in tomorrow, it will say yes instead of hello... or you could change the date... or change > to <-->


1

Questo funziona per me:

 export default (chosenDate) => {
  const now = new Date();
  const today = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()));
  const splitChosenDate = chosenDate.split('/');

  today.setHours(0, 0, 0, 0);
  const fromDate = today.getTime();
  const toDate = new Date(splitChosenDate[2], splitChosenDate[1] - 1, splitChosenDate[0]).getTime();

  return toDate < fromDate;
};

Nella risposta accettata, c'è un problema di fuso orario e nell'altra ora non è 00:00:00


0

So che a questa domanda è già stata data una risposta e questo potrebbe non essere il modo migliore, ma nel mio scenario funziona perfettamente, quindi ho pensato che potesse aiutare qualcuno come me.

se hai date stringcome

String dateString="2018-01-01T18:19:12.543";

e vuoi solo confrontare la parte della data con un altro oggetto Date in JS,

var anotherDate=new Date(); //some date

poi si deve convertl' stringad Dateoggetto utilizzandonew Date("2018-01-01T18:19:12.543");

ed ecco il trucco: -

var valueDate =new Date(new Date(dateString).toDateString());

            return valueDate.valueOf() == anotherDate.valueOf(); //here is the final result

Ho usato toDateString()di Date objectJS, che restituisce solo la stringa della data.

Nota: non dimenticare di utilizzare la .valueOf()funzione durante il confronto delle date.

maggiori informazioni su .valeOf()è qui riferimento

Felice codding.


0

Questo aiuterà. Sono riuscito a farlo in questo modo.

var currentDate = new Date(new Date().getFullYear(), new Date().getMonth() , new Date().getDate())

0

Il confronto con setHours()sarà una soluzione. Campione:

var d1 = new Date();
var d2 = new Date("2019-2-23");
if(d1.setHours(0,0,0,0) == d2.setHours(0,0,0,0)){
    console.log(true)
}else{
    console.log(false)
}

0
var fromdate = new Date(MM/DD/YYYY);
var todate = new Date(MM/DD/YYYY);
if (fromdate > todate){
    console.log('False');
}else{
    console.log('True');
}

se il formato della data è diverso, utilizzare la libreria moment.js per convertire il formato della data e quindi utilizzare il codice sopra per confrontare due date

Esempio :

Se la tua data è in "GG / MM / AAAA" e vuoi convertirla in "MM / GG / AAAA", vedi l'esempio di codice seguente

var newfromdate = new Date(moment(fromdate, "DD/MM/YYYY").format("MM/DD/YYYY"));
console.log(newfromdate);
var newtodate = new Date(moment(todate, "DD/MM/YYYY").format("MM/DD/YYYY"));
console.log(newtodate);

0

Puoi usare fp_incr (0). Che imposta la parte del fuso orario su mezzanotte e restituisce un oggetto data.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.