我试图在一个基本的例子上比较日期,并且无法找到最好的方法。
下面显示抓住今天的日期/时间,然后在IF声明中进行比较。我确信我硬编码的格式是错误的,但是在输出默认格式的格式时。所以问题是如何查看一个日期是否低于另一个日期以及如何将它们格式化为仅限日期?
<p>
<c:set var="testme" value="<%=new java.util.Date()%>"/>
<b><c:out value="${testme}"/></b>
</p>
<c:if test="${testme lt 'Tue Jan 29 16:02:58 GMT 2013'}">
<p><b><span class="wrap">Test date is less.</span></b></p>
</c:if>
答案 0 :(得分:11)
对于初学者,不要混用 Scriptlets 和taglibs / EL。这只是麻烦的秘诀。使用其中一个而不是两个。假设你想继续使用taglibs / EL,你可以这样做:
<p>
<jsp:useBean id="today" class="java.util.Date" />
<b><c:out value="${today}"/></b>
</p>
<fmt:setLocale value="en_US" />
<fmt:parseDate var="testdate" value="Tue Jan 29 16:02:58 GMT 2013" pattern="EEE MMM dd HH:mm:ss z yyyy" />
<c:if test="${today.time gt testdate.time}">
<p><b><span class="wrap">Test date is less than now.</span></b></p>
</c:if>
请注意,我还修改了变量名称和描述中的一些奇怪的反逻辑。
答案 1 :(得分:0)
您可以执行以下操作:
<%@ taglib uri = "<pathToLibraries>/fmt.tld" prefix = "fmt" %>
<%------ Do Something between dates ----------%>
<jsp:useBean id="now" class="java.util.Date"/>
<c:set var = "start" value = "30-07-2019" />
<c:set var = "end" value = "24-09-2019" />
<fmt:parseDate value = "${start}" var = "parsedStartDate" pattern = "dd-MM-yyyy" />
<fmt:parseDate value = "${end}" var = "parsedEndDate" pattern = "dd-MM-yyyy" />
<c:if test="${(parsedStartDate le now) && (parsedEndDate ge now)}">
<%------ Do Something between dates ----------%>
</c:if>
已经讨论了不同的选项ge, le, gt, lt
等。