使用 LocalDate 会报错,Unsupported field: HourOfDay。怎样坚持使用LocalDate的同时,SpringMVC 能正常返回
时间: 2024-12-24 19:40:24 浏览: 3
`LocalDate` 是 Java 8 中的一个日期类,它表示日历年份、月份和日期,但并不包含时间信息。如果你在处理 `LocalDate` 对象并遇到 `Unsupported field: HourOfDay` 的错误,这通常是因为你在试图设置或获取本地时间的时间部分,而 `LocalDate` 并不支持这些操作。
要在 Spring MVC 环境下使用 `LocalDate` 并避免这种错误,你应该专注于日期相关的业务逻辑,而不是时间。当你需要返回日期给前端时,可以考虑以下做法:
1. 使用 `DateTimeFormatter` 将 `LocalDate` 格式化成只包含日期的字符串,例如 ISO-8601 格式 (`yyyy-MM-dd`) 或者自定义格式。
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateUtil {
public static String formatDate(LocalDate date) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
return date.format(formatter);
}
}
```
2. 当接收请求参数时,同样使用 `DateTimeFormatter` 解析前端传来的日期字符串回填到 `LocalDate` 对象。
```java
@PostMapping("/save")
public ResponseEntity<?> save(@RequestBody Map<String, Object> data) {
String inputDateStr = data.get("date").toString();
LocalDate localDate = LocalDate.parse(inputDateStr, DateTimeFormatter.ISO_DATE);
// ...剩下的业务处理
}
```
阅读全文