如何去除网页日期的时分秒?已配置@DateTimeFormat与Thymeleaf格式化
解决日期仍显示时分秒的问题
1. 检查字段匹配问题
你在Java实体类中给dateFinContrat字段添加了@DateTimeFormat(pattern = "yyyy-MM-dd")注解,但Thymeleaf模板里格式化的是dateNaissance字段——如果这是两个不同的字段,那dateNaissance并没有被注解处理,数据库返回的Date对象可能包含时分秒信息,导致格式化后仍显示。
- 若为笔误,给
dateNaissance字段也加上@DateTimeFormat(pattern = "yyyy-MM-dd")注解; - 若确实是处理两个不同字段,针对性给
dateNaissance做注解配置。
2. 确认Thymeleaf格式化逻辑适配类型
如果dateNaissance是java.sql.Timestamp或Java 8+的时间API类型(如LocalDate),直接用#dates.format可能无法完全截断时分秒,需切换对应工具方法:
- 若为
java.sql.Timestamp,先转换为java.util.Date再格式化:
<td th:text="${#dates.format(T(java.util.Date).valueOf(row.dateNaissance), 'dd/MM/yyyy')}"></td>
- 若为Java 8+时间类型(如
LocalDate),使用#temporals.format,需先引入Java 8时间命名空间:
<html xmlns:th="http://www.thymeleaf.org" xmlns:tem="http://www.thymeleaf.org/extras/java8time">
然后修改表达式:
<td th:text="${#temporals.format(row.dateNaissance, 'dd/MM/yyyy')}"></td>
3. 后端截断日期的时分秒
如果数据库存储的是带时分秒的类型(如datetime),后端返回的Date对象会保留这些信息,可在代码中直接处理:
public Date getDateNaissance() { if (dateNaissance == null) return null; Calendar cal = Calendar.getInstance(); cal.setTime(dateNaissance); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); return cal.getTime(); }
或者在SQL查询时直接提取日期部分:
SELECT DATE(date_naissance) AS dateNaissance FROM your_table;
4. 前端兜底处理
如果以上方法都未生效,可在前端通过JavaScript截断时分秒:
<td th:text="${#dates.format(row.dateNaissance, 'dd/MM/yyyy HH:mm:ss')}" th:onload="this.textContent = this.textContent.split(' ')[0]"></td>
内容的提问来源于stack exchange,提问作者user17229488
相关产品推荐
相关产品推荐

