You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除网页日期的时分秒?已配置@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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 04:57:32