Estoy tratando de usar momentjs
para verificar si una fecha determinada es hoy o en el futuro.
Esto es lo que tengo hasta ahora:
<script type="text/javascript" src="http://momentjs.com/downloads/moment.min.js"></script>
<script type="text/javascript">
var SpecialToDate = '31/01/2014'; // DD/MM/YYYY
var SpecialTo = moment(SpecialToDate, "DD/MM/YYYY");
if (moment().diff(SpecialTo) > 0) {
alert('date is today or in future');
} else {
alert('date is in the past');
}
</script>
El código está evaluando mi fecha (31 de enero de 2014) como una fecha pasada.
¿Alguna idea de lo que estoy haciendo mal?
moment().diff(SpecialToDate)
directamente dará la diferencia en milisegundos.'days'
no es necesario. Esto funcionará para todos los escenarios. SpecialToDate puede ser'2018-10-26 00:00:00'
por ejemplo.Puedes usar la
isSame
función:fuente
startTime
? El objeto de fecha no tiene unisSame
método ...fuente
Como nadie parece haberlo mencionado todavía, la forma más simple de verificar si un objeto de fecha Moment está en el pasado:
O en el futuro:
Simplemente deje los argumentos en blanco, eso estará predeterminado por ahora.
También hay
isSameOrAfter
yisSameOrBefore
.NB esto factores en el tiempo. Si solo te importa el día, mira la respuesta de Dipendu .
fuente
momentObj
en mi ejemplo es una instancia de una fecha de momento. Los documentos hablan específicamente de crear una nueva instancia (hora actual) y luego verificar si está en el pasado, en una declaración. Estoy no sugiere que hacesmoment().isBefore()
, que es completamente inútil - ¿por qué se comprueba si ya está en el pasado (o futuro)?Puede usar la
isAfter()
función de consulta de momentjs:Compruebe si un momento es después de otro momento.
Si desea limitar la granularidad a una unidad que no sea milisegundos, pase las unidades como segundo parámetro.
http://momentjs.com/docs/#/query/is-after/
fuente
invierta es Antes del método de momento para verificar si una fecha es la misma que hoy o en el futuro de esta manera:
fuente
En caso de que alguien más necesite esto, solo haz esto:
o si quieres una función:
Donde fecha es la fecha que desea verificar.
Explicación
moment(0, "HH")
vuelve el día de hoy a medianoche.date1.diff(date2, "days")
devuelve el número de días entre date1 y date2.Actualizar
Desde entonces, he encontrado la función isSame , que creo que es la función correcta para determinar si una fecha es hoy:
fuente
Para verificar si es hoy :
Si comparamos dos fechas que contienen también la información de tiempo
isSame
obviamente fallará.diff
fallará en caso de que las dos fechas abarquen el nuevo día:Creo que la mejor manera, incluso si no es rápida y corta, es la siguiente:
Para verificar si es en el futuro :
Según lo sugerido también por otros usuarios, el
diff
método funciona.fuente
Si solo necesita saber cuál es más grande, también puede compararlos directamente:
¡Espero que esto ayude!
fuente
si firstDate es el mismo o después (futuro) secondDate return true sino devuelve false. Toda es firstDate = new Date ();
Hay isSame, isBefore y isAfter para ejemplo de momento de comparación de días;
fuente
Use el más simple para verificar la fecha futura
fuente
Y luego solo utilízalo en línea:
fuente
Seleccione ayer para verificar los días pasados o no con la ayuda de
moment().subtract(1, "day");
Referencia: - http://momentjs.com/docs/#/manipulating/subtract/
fuente
Si queremos diferencia sin el tiempo, puede obtener la fecha diferente (solo fecha sin tiempo) como a continuación, utilizando el formato de momento.
Como, estaba enfrentando un problema con la diferencia mientras lo hacía;
Entonces, se me ocurrió seguir;
const dateValidate = moment(moment().format('YYYY-MM-DD')).diff(moment([YOUR SELECTED DATE HERE]).format('YYYY-MM-DD'))
Por favor, siéntase libre de comentar si hay algo para mejorar.
Gracias,
fuente
Lo quería para otra cosa, pero finalmente encontré un truco que puedes probar
somedate.calendar(compareDate, { sameDay: '[Today]'})=='Today'
fuente
consulte con lo siguiente:
Está regresando en segundos.
Si se comprobará como condición de 2 minutos, entonces
fuente
La respuesta más simple será:
Verificará con el valor de medianoche y devolverá un resultado preciso. También funcionará cuando la diferencia de tiempo entre dos fechas sea inferior a 24 horas también.
fuente