Comparar la parte de la fecha solo sin comparar el tiempo en JavaScript

397

¿Qué hay de malo con el siguiente código?

Quizás sería más simple comparar la fecha y no la hora. Tampoco estoy seguro de cómo hacer esto, y busqué, pero no pude encontrar mi problema exacto.

Por cierto, cuando muestro las dos fechas en una alerta, se muestran exactamente igual.

Mi código:

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

¿Hay una manera más simple de comparar fechas y no incluir la hora?

Molécula
fuente

Respuestas:

781

Todavía estoy aprendiendo JavaScript, y la única forma en que he encontrado que funciona para mí para comparar dos fechas sin el tiempo es usar el setHours método del objeto Fecha y establecer las horas, minutos, segundos y milisegundos a cero. Luego compara las dos fechas.

Por ejemplo,

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

date2se configurará con horas, minutos, segundos y milisegundos a cero, pero date1 los configurará a la hora en que se creó date1. Para deshacerse de las horas, minutos, segundos y milisegundos en la fecha1, haga lo siguiente:

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

Ahora puede comparar las dos fechas como FECHAS solo sin preocuparse por los elementos de tiempo.

nexar
fuente
63
Tenga en cuenta que las pruebas realizadas por date1 === date2no parecen proporcionar un comportamiento coherente; Es mejor hacerlo date1.valueOf() === b.valueOf()o incluso date1.getTime() === date2.getTime(). Extrañeza.
Erwin Wessels
44
Tenga cuidado: si date1 y date2 están en invierno y verano, y planea iterar de uno a otro con addDays (1), el problema es que no tendrán la misma zona horaria debido al horario de verano, por lo que el último comparar que debería dar fechas iguales no funcionará porque las dos fechas no están realmente en 00: 00: 00: 0.
Oliver
99
Sé que esta es una vieja pregunta, pero aparece primero en Google cuando se busca. Ten cuidado con esta respuesta. Esto dará respuestas incorrectas si el usuario no está en la misma zona horaria que el creador del objeto de fecha. Por ejemplo, cambie la zona horaria en el sistema operativo de su computadora a la hora de la costa este (EE. UU.). Abra la consola de su navegador y escriba var date2 = new Date(2011,8,20). Ahora cambie la zona horaria del sistema operativo a la hora del Pacífico (EE. UU.). En el mismo tipo de consola del navegador, date2.toDateString()¡volverás en Mon Sep 19 2011lugar del martes 20!
Adam
99
También tenga en cuenta que setHours()establece el tiempo en función de la zona horaria actual, que detecta automáticamente el navegador. Probar: t = new Date("2016-02-29T01:45:49.098Z"); t.setHours(0,0,0,0); console.log(t.toJSON());imprimirá "2016-02-28T15:00:00.000Z", fecha 28, pero no 29 Mi zona horaria actual esAsia/Tokyo
transang
8
Esta respuesta realmente debería actualizarse para usar setUTCxxxmétodos en lugar de las variantes locales / de zona horaria.
Stijn de Witt
136

CUIDADO CON LA TIMEZONE

Usar el objeto de fecha para representar solo una fecha de inmediato lo lleva a un gran problema de exceso de precisión. Debe administrar el tiempo y la zona horaria para mantenerlos alejados, y pueden colarse en cualquier momento. La respuesta aceptada a esta pregunta cae en la trampa.

Una fecha de JavaScript no tiene noción de zona horaria . Es un momento en el tiempo (marca desde la época) con prácticas funciones (estáticas) para traducir hacia y desde cadenas, utilizando de forma predeterminada la zona horaria "local" del dispositivo o, si se especifica, UTC u otra zona horaria. Para representar just-a-date ™ con un objeto de fecha, desea que sus fechas representen la medianoche UTC al comienzo de la fecha en cuestión. Esta es una convención común y necesaria que le permite trabajar con fechas independientemente de la temporada o zona horaria de su creación. Por lo tanto, debe estar muy atento para administrar la noción de zona horaria, tanto cuando crea su objeto UTC Date de medianoche como cuando lo serializa.

Mucha gente está confundida por el comportamiento predeterminado de la consola. Si aplica una fecha a la consola, la salida que verá incluirá su zona horaria. Esto es solo porque la consola llama toString()a tu cita y toString()te da una representación local. ¡La fecha subyacente no tiene zona horaria ! (Mientras la hora coincida con el desplazamiento de la zona horaria, todavía tiene un objeto de fecha UTC de medianoche)

Deserialización (o creación de objetos UTC Date a medianoche)

Este es el paso de redondeo, con el truco de que hay dos respuestas "correctas". La mayoría de las veces, querrá que su fecha refleje la zona horaria del usuario. Haz clic si hoy es tu cumpleaños . Los usuarios de NZ y EE. UU. Hacen clic al mismo tiempo y obtienen fechas diferentes. En ese caso, haz esto ...

// 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 veces, la comparabilidad internacional supera la precisión local. En ese caso, haz esto ...

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

Deserializar una fecha

A menudo, las fechas en el cable tendrán el formato AAAA-MM-DD. Para deserializarlos, haz esto ...

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

Serializando

Habiendo tenido cuidado de administrar la zona horaria cuando crea, ahora debe asegurarse de mantener la zona horaria fuera cuando convierta nuevamente a una representación de cadena. Para que pueda usar con seguridad ...

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

Y evita totalmente todo lo demás, especialmente ...

  • getYear()` getMonth()`getDate()

Entonces, para responder a su pregunta, 7 años demasiado tarde ...

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

Véalo correr ...

Actualización 2019 ... cosas gratis ...

Dada la popularidad de esta respuesta, lo puse todo en código. La siguiente función devuelve un objeto de fecha envuelta y solo expone aquellas funciones que son seguras de usar con just-a-date ™.

Llámalo con un objeto Date y se resolverá en JustADate reflejando la zona horaria del usuario. Llámalo con una cadena: si la cadena es un ISO 8601 con la zona horaria especificada, simplemente redondearemos la parte del tiempo. Si no se especifica la zona horaria, la convertiremos a una fecha que refleje la zona horaria local, al igual que para los objetos de fecha.

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

bbsimonbb
fuente
3
¡Su respuesta contiene información realmente valiosa! Desafortunadamente, en realidad no agregaste la respuesta a la pregunta real de OP, evitando que lo votara. Intente agregar un pequeño fragmento de código que responda la pregunta de OP.
Stijn de Witt
Ja ja ja @ '7 años demasiado tarde'! Me gusta tu estilo user1585345! Tienes mi voto!
Stijn de Witt
Encontré esto útil. Tenga en cuenta que hay un error tipográfico en el fragmento de "comparabilidad internacional". Creo que debería ser: new Date (Date.UTC (myDate.getUTCFullYear (), myDate.getUTCMonth (), myDate.getUTCDate ()));
RikRak
1
¡Ojalá pudiera votar esta respuesta 100 veces!
Sanađошƒаӽ
77

¿Qué tal esto?

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

Le permite comparar la parte de fecha de la fecha de esta manera sin afectar el valor de su variable:

var date1 = new Date(2014,1,1);
new Date().withoutTime() > date1.withoutTime(); // true
Adepto
fuente
Esta es, con mucho, la respuesta más elegante a la publicación original. No creé una función separada para mis propósitos, solo incluí las dos líneas de código.
Danimal Reks
25

Usando Moment.js

Si tiene la opción de incluir una biblioteca de terceros, definitivamente vale la pena echarle un vistazo a Moment.js . Esto hace que el trabajo con Datey DateTimemucho, mucho más fácil.

Por ejemplo, al ver si una Fecha viene después de otra Fecha pero excluyendo sus horas, haría algo como esto:

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

El segundo parámetro que toma en isAfteres la precisión de hacer la comparación y puede ser cualquiera de year, month, week, day, hour,minute o second.

Joshua Pinter
fuente
44
obtuve una aceleración de 100x al pasar de una solución momentjs a una solución Date () + sethours. amigos cuidadosos :-)
2c2c
@ 2c2c Interesante. Definitivamente bueno saber el impacto en el rendimiento. ¿Cuántas operaciones usaste para tu punto de referencia?
Joshua Pinter
1
Estaba en alrededor de 1mil comparaciones. no configuró un punto de referencia real
2c2c
17

Simplemente compare usando .toDateString como a continuación:

new Date().toDateString();

Esto le devolverá la fecha solo parte y no la hora o zona horaria, como esta:

"Vie 03 feb 2017"

Por lo tanto, ambas fechas se pueden comparar en este formato del mismo modo sin tiempo.

Rahi
fuente
2
Es un buen comienzo, pero no permitirá comparaciones porque ahora es una cadena. Para comparar, vuelva a cambiarlo a un objeto Date haciendo new Date(new Date().toDateString());
Grid Trekkor
@GridTrekkor Verdadero, pero si solo desea una prueba de igualdad rápida, esta es la solución más simple.
CM
8

Esta podría ser una versión un poco más limpia, también tenga en cuenta que siempre debe usar una raíz cuando use 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);
    }
});

Consulte la página parseInt de MDC para obtener más información sobre la raíz.

JSLint es una gran herramienta para atrapar cosas como una raíz perdida y muchas otras cosas que pueden causar errores oscuros y difíciles de depurar. Te obliga a usar mejores estándares de codificación para evitar futuros dolores de cabeza. Lo uso en cada proyecto de JavaScript que codifico.

Código inútil
fuente
@EmKay Esto no debería ser un gran problema ahora, ya que ES5 es bastante estándar en la mayoría de los navegadores y prohíbe la interpretación octal, PERO algunos navegadores aún podrían estar usando la vieja interpretación octal por razones de compatibilidad con versiones anteriores, por lo que seguiría usando una raíz en el futuro inmediato.
Código inútil
Si utiliza un modo estricto, las interpretaciones octales arrojarán errores, lo cual es bueno porque le ayuda a encontrar errores que pueden ser malinterpretados.
Código inútil
4

La biblioteca date.js es útil para estas cosas. Hace que todas las secuencias de comandos relacionadas con la fecha de JS sean mucho más fáciles.

Diodeus - James MacFarlane
fuente
11
¿Puedes agregar más información sobre cómo esta biblioteca lo hace más fácil?
Mahmoud Hanafy
4

Si realmente está comparando la fecha sin un componente de tiempo, otra solución que puede parecer incorrecta pero que funciona y evita todos los Date()dolores de cabeza de tiempo y zona horaria es comparar la fecha de la cadena ISO directamente usando la comparación de cadenas:

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

Puede obtener la fecha actual (fecha UTC, no necesariamente la fecha local del usuario) usando:

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

Mi argumento a favor es la simplicidad del programador: es mucho menos probable que arruines esto que tratar de manejar las fechas y las compensaciones correctamente, probablemente a costa de la velocidad (no he comparado el rendimiento)

Brittohalloran
fuente
También puedes hacer new Date().toISOString().substr(0, 10) // "2019-04-22".
Stomy
Para la fecha local (fecha no UTC) puede usar new Date().toLocaleDateString() // "8/26/2019". Pero luego comparar el texto no será exacto (como "8/26/2019" >= "9/29/2001"es falso). Por lo tanto, deberá convertirlo new Date(new Date().toLocaleDateString())para compararlo con precisión con otra fecha.
Stomy
4

Solo use toDateString () en ambas fechas. toDateString no incluye la hora, por lo que durante 2 veces en la misma fecha, los valores serán iguales, como se demuestra a continuación.

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

Obviamente, algunas de las preocupaciones de zona horaria expresadas en otra parte sobre esta pregunta son válidas, pero en muchos escenarios, no son relevantes.

Mike Feltman
fuente
1
En mi caso, esta solución es mucho mejor que la respuesta seleccionada y las respuestas más votadas. Se dice explícitamente en el título "sin comparar el tiempo", esta solución lo hace exactamente, ahorrando la necesidad de establecer el tiempo para manipular la comparación. Para responder "¿Sucedieron el evento X y el evento Y el mismo día?" Tiene más sentido comparar solo la fecha, en lugar de responder "Es 00: 00: 00.00 AM de la fecha del evento X exactamente igual con 00:00: 00.00 de la fecha del evento Y? " que es lo que muchos otros respondedores están haciendo
Mr.K
3

Así es como lo hago:

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();
    });
}
Fabrizio
fuente
Actualmente lo uso en producción y no tengo ningún problema o incompatibilidad con el navegador, etc ... ¿alguna razón por la que dices que getTime()es obligatorio?
Fabrizio
55
Tenga en cuenta que setHours()modifica el objeto al que se llama y devuelve la fecha como un número de milisegundos (equivalente a la llamada getTime()). Por lo tanto, su todayvariable no es un Dateobjeto como algunos esperarían, sino que en realidad es un número entero de milisegundos. Como efecto secundario, esta es la razón por la que no necesitaba llamar getTime()antes de comparar, ya que lo ha hecho de una manera oscura.
Timothy Walters
3

Como no veo aquí un enfoque similar, y no estoy disfrutando de establecer h / m / s / ms en 0, ya que puede causar problemas con la transición precisa a la zona horaria local con un dateobjeto cambiado (supongo que sí), permítanme introduce aquí esto, escrito hace unos momentos, función lil:

+: Fácil de usar, realiza operaciones básicas de comparación (comparación de día, mes y año sin tiempo)
-: Parece que esto es completamente opuesto al pensamiento " listo para usar ".

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)para verificación de igualdad,
datecompare(date1, '>', date2)para verificación mayor,
!datecompare(date1, '>', date2)para verificación menor o igual

Además, obviamente, puede cambiar date1y date2en algunos lugares para lograr cualquier otra comparación simple.

Max Yari
fuente
Nice one, plus plus, me ayudó, ahora espero que las conversiones iso no muerdan, jaja, gracias.
edencorbin
3

Una forma eficiente y correcta de comparar fechas es:

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

Ignora la parte del tiempo, funciona para diferentes zonas horarias y también puede comparar para la igualdad ==. 86400000 es el número de milisegundos en un día ( = 24*60*60*1000).

Tenga en cuenta que el operador de igualdad ==debe nunca se puede utilizar para comparar los objetos Date, ya que falla cuando se puede esperar una prueba de la igualdad de trabajo, ya que está comparando dos objetos Fecha (y no se puede comparar las dos fechas), por ejemplo:

> 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

Notas: Si está comparando objetos Date que tienen la parte de tiempo establecida en cero, entonces podría usarla, date1.getTime() == date2.getTime()pero no vale la pena la optimización. Se puede utilizar <, >, <=, o >=cuando se comparan los objetos Date directamente debido a que estos operadores primero convertir el objeto Date llamando .valueOf()antes de que el operador realiza la comparación.

robocat
fuente
2

Después de leer esta pregunta casi al mismo tiempo después de su publicación, he decidido publicar otra solución, ya que no la encontré muy satisfactoria, al menos para mis necesidades:

He usado algo como esto:

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

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

De esa manera, podría haber usado las fechas en el formato que quería para procesar después. Pero esto fue solo para mi necesidad, pero he decidido publicarlo de todos modos, tal vez ayude a alguien

Aleks
fuente
1
Tenga en cuenta que su currentDatevariable no es una fecha, es un número de milisegundos desde 1970-01-01. El setHours()método modifica el objeto de fecha en el que se invoca y devuelve el equivalente de getTime()(valor de fecha en milisegundos desde 1970-01-01).
Timothy Walters
1

Asegúrese de construir userDatecon un año de 4 dígitos como setFullYear(10, ...) !== setFullYear(2010, ...).

Alex K.
fuente
1

Puede usar algo de aritmética con el total de ms.

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

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

Me gusta porque no se realizan actualizaciones a las fechas originales y se realizan más rápido que la división y comparación de cadenas.

¡Espero que esto ayude!

Miguel
fuente
1

Este JS cambiará el contenido después de la fecha establecida, esto es lo mismo pero en 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 <-->

NICHOLAS WOJNAR
fuente
1

Esto funciona para mi:

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

En la respuesta aceptada, hay un problema de zona horaria y en el otro momento no son las 00:00:00

Yogesh Devgun
fuente
0

Sé que esta pregunta ya ha sido respondida y esta puede no ser la mejor manera, pero en mi caso funciona perfectamente, así que pensé que podría ayudar a alguien como yo.

si tienes date stringcomo

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

y solo quieres comparar la parte de la fecha con otro objeto Date en JS,

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

entonces usted tiene que convertla stringde Dateobjeto utilizandonew Date("2018-01-01T18:19:12.543");

y aquí está el truco:

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

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

He usado toDateString()de Date objectJS, que solo devuelve la cadena de fecha.

Nota: No olvide usar la .valueOf()función al comparar las fechas.

Más información sobre .valeOf()es aquí referencia

Feliz codificación

RK Sharma
fuente
0

Esto ayudará. Me las arreglé para conseguirlo así.

var currentDate = new Date(new Date().getFullYear(), new Date().getMonth() , new Date().getDate())
Hiran DA Walawage
fuente
0

Comparar con setHours()será una solución. Muestra:

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)
}
Chandrashekhar Kase
fuente
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');
}

si su formato de fecha es diferente, use la biblioteca moment.js para convertir el formato de su fecha y luego use el código anterior para comparar dos fechas

Ejemplo:

Si su fecha está en "DD / MM / AAAA" y quiere convertirla en "MM / DD / AAAA", consulte el siguiente ejemplo de código

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);
Pritesh Singh
fuente
0

Puede usar fp_incr (0). Que establece la parte de zona horaria a medianoche y devuelve un objeto de fecha.

usuario2849789
fuente