You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

JSP页面中如何给premiumPaidToDate.time增加10天并显示下一个付款日期

JSP页面中如何给premiumPaidToDate.time增加10天并显示下一个付款日期

嗨,我来帮你搞定这个需求!在JSP里给日期加10天其实有几种简单的实现方式,我给你列两个最常用的:

方法一:用传统的Calendar类(兼容所有Java版本)

这种方法不需要依赖Java 8+的新API,兼容性拉满。核心思路是把现有的Date对象转成Calendar,然后调用add方法添加天数,最后再格式化输出:

<%-- 1. 把已付到期日的Date对象赋值给Calendar实例 --%>
<c:set var="nextPaymentCal" value="${premiumPaidToDate.time}" type="java.util.Date" />
<jsp:useBean id="nextPaymentCal" class="java.util.Calendar" scope="page" />

<%-- 2. 给Calendar添加10天(注意add方法返回void,用临时变量接收避免页面输出空值) --%>
<c:set var="temp" value="${nextPaymentCal.add(java.util.Calendar.DATE, 10)}" />

<%-- 3. 分别输出原日期和计算后的下一个付款日 --%>
<li>Paid Due Date: <fmt:formatDate value="${premiumPaidToDate.time}" pattern="dd/MM/yyyy"/></li>
<li>Next Payment Date: <fmt:formatDate value="${nextPaymentCal.time}" pattern="dd/MM/yyyy"/></li>

我给你解释下这段代码:

  • 先用<c:set>premiumPaidToDate.time这个Date对象赋值给nextPaymentCal,再用<jsp:useBean>把它转成Calendar类型。
  • 调用Calendar.add(Calendar.DATE, 10)来加10天,因为这个方法没有返回值,所以用一个临时的temp变量接收结果,防止页面上输出多余的null
  • 最后用fmt:formatDate格式化Calendar的time属性(也就是Date对象)输出即可。

方法二:用Java 8+的新时间API(更简洁)

如果你的项目用的是Java 8或更高版本,推荐用LocalDate这种更简洁的时间类,代码会更清爽:

<%-- 1. 把Date对象转成LocalDate(适配系统默认时区) --%>
<c:set var="paidToLocalDate" value="${premiumPaidToDate.time.toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate()}" />

<%-- 2. 直接添加10天 --%>
<c:set var="nextPaymentDate" value="${paidToLocalDate.plusDays(10)}" />

<%-- 3. 输出两个日期 --%>
<li>Paid Due Date: <fmt:formatDate value="${premiumPaidToDate.time}" pattern="dd/MM/yyyy"/></li>
<li>Next Payment Date: <fmt:formatDate value="${nextPaymentDate}" pattern="dd/MM/yyyy"/></li>

⚠️ 注意:如果你的JSTL版本比较旧(低于1.2.1),fmt:formatDate可能不支持直接格式化LocalDate,这时候你可以把LocalDate再转成Date:

<c:set var="nextPaymentDateObj" value="${java.util.Date.from(nextPaymentDate.atStartOfDay(java.time.ZoneId.systemDefault()).toInstant())}" />
<fmt:formatDate value="${nextPaymentDateObj}" pattern="dd/MM/yyyy"/>

小提醒

如果你的项目是MVC架构(比如用Spring MVC),其实更推荐在后端的Service或者Controller里计算好nextPaymentDate,然后把这个值传到JSP页面,这样JSP只负责展示逻辑,代码会更清晰易维护哦!

火山引擎 最新活动