如果是今天或将来,我想显示截止日期,如果日期已经过去,我想显示“关闭”一词。
我有以下代码,它在截止日期和今天的日期相同时运行。
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>
截止日期采用以下格式:“2021 年 12 月 21 日”
我也试过:
v-if="Date.now() >= new Date(deadline)"
v-if="Date.now() > +1 new Date(deadline)"
但如果截止日期和今天的日期相同,它们都会显示语句的“其他”部分。感谢您的帮助。
最佳答案
尝试使用“一天结束”时间
在浏览器控制台中输入您的日期(在撰写本文时):
> new Date('21 December 2021');
Tue Dec 21 2021 00:00:00
> new Date();
Tue Dec 21 2021 12:19:09
所以 new Date()
总是“现在”到秒(实际上是毫秒)。
您的比较日期总是从“00:00:00”开始。
所以如果你想知道new Date()
是否晚于deadline
,添加23:59:59
作为时间:
new Date() > new Date('21 December 2021 23:59:59');
这在明天之前都是错误的。
因此在您的情况下,您可以在 deadline
本身解决它或手动添加时间:
v-if="Date.now() > new Date(deadline + ' 23:59:59')"
关于vue.js - 如果两个日期是同一天,则无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70434345/