Me gustaría mostrar la fecha límite si es hoy o en el futuro y la palabra 'Cerrado' si la fecha ha pasado.
Tengo el siguiente código que funciona APARTE de cuando la fecha límite y la fecha de hoy son las mismas.
HTML
<div class="deadline-inner"> <p v-if="Date.now() > new Date(deadline)" class="showclosedtitle" > <i class="fa fa-calendar-check-o" aria-hidden="true"></i>Closed </p> <p v-else> <i class="fa fa-calendar-check-o" aria-hidden="true"></i> <strong>Deadline: </strong>{{ deadline }} </p> </div>
La fecha límite tiene este formato: "21 de diciembre de 2021"
También he probado:
v-if="Date.now() >= new Date(deadline)" v-if="Date.now() > +1 new Date(deadline)"
pero todos ellos muestran la parte 'else' de la declaración si la fecha límite y la fecha de hoy son las mismas. Cualquier ayuda es apreciada.
Escribiendo sus fechas en la consola del navegador (al momento de escribir esto):
> new Date('21 December 2021'); Tue Dec 21 2021 00:00:00 > new Date(); Tue Dec 21 2021 12:19:09
Entonces new Date()
siempre es "ahora" hasta el segundo (milisegundo, en realidad).
Su fecha comparada siempre es desde "00:00:00".
Entonces, si desea saber si new Date()
es posterior a la deadline
, agregue 23:59:59
como hora:
new Date() > new Date('21 December 2021 23:59:59');
Esto ahora será falso hasta mañana.
Entonces, en su caso, podría resolverlo en la deadline
o agregar el tiempo manualmente:
v-if="Date.now() > new Date(deadline + ' 23:59:59')"
@user13928344 Su deadline
no es lo suficientemente específica. No hay horas/minutos/segundos/milisegundos, por lo que el valor predeterminado es el primer momento en que existe la fecha, que es medianoche o 00:00:00:000. Por lo tanto, su nueva Fecha () siempre será mayor que la fecha límite y devolverá verdadero (salvo la posibilidad muy pequeña de que su lógica se ejecute exactamente a la medianoche y todos los ceros, en cuyo caso sería igual a su fecha límite y no mayor que , por lo que devolvería falso). ¿De dónde obtienes tus datos de fecha límite? ¿Lo está transformando usted mismo al formato actual y lo está obteniendo de un servidor? Si es así, conviértalo a una fecha/hora más específica. De lo contrario, si proviene de la entrada del usuario, es decir, un formulario, convierta su fecha a milisegundos y luego agregue 86340000
, lo que llevará su fecha límite hasta el final de ese día.