spring boot项目拿到的日期
时间: 2025-02-01 16:01:55 浏览: 36
### 如何在 Spring Boot 中正确获取和处理日期
#### 使用 `@DateTimeFormat` 注解解析请求参数中的日期字符串
为了确保传入的日期字符串能够被正确转换成 Java 的 `Date` 或者 `LocalDate` 类型,在控制器层可以使用 `@DateTimeFormat` 注解来指定输入格式。
```java
import org.springframework.format.annotation.DateTimeFormat;
// ...
@GetMapping("/getEventByDate")
public Event getEvent(@RequestParam("eventDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate eventDate){
// 处理逻辑...
}
```
此方式适用于 URL 参数传递的情况[^1]。
#### 配置全局日期时间格式化器
如果希望在整个应用程序范围内统一设置日期格式,则可以在配置文件 application.properties 或 application.yml 中定义默认的时间模式:
对于 properties 文件:
```
spring.mvc.date-format=yyyy-MM-dd HH:mm:ss
```
而对于 yml 文件则是这样的形式:
```yaml
spring:
mvc:
date-format: 'yyyy-MM-dd HH:mm:ss'
```
这会使得所有的日期字段都按照设定好的样式来进行序列化/反序列化操作[^2]。
#### 利用 Jackson 自定义 JSON 序列化与反序列化行为
当涉及到 RESTful API 返回的数据包含有 java.util.Date 类型的对象时,可以通过自定义 ObjectMapper 来控制其表现形式。创建一个新的类继承 WebMvcConfigurer 并重写 addFormatters 方法即可实现这一点;另外也可以通过编写特定类型的 Serializer 和 Deserializer 达到目的。
下面是一个简单的例子展示如何为 Date 对象添加 ISO8601 时间戳的支持:
```java
@Configuration
public class AppConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter jacksonConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
JavaTimeModule module = new JavaTimeModule();
objectMapper.registerModule(module);
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
jacksonConverter.setObjectMapper(objectMapper);
converters.add(jacksonConverter);
}
}
```
这段代码片段展示了怎样注册一个支持 LocalDateTime 及其他 JSR-310 数据类型的模块,并关闭了将日期作为 Unix 时间戳输出的功能,转而采用更易读的形式表示日期时间和本地时间[^3]。
阅读全文
相关推荐







