springboot 获取当前日期_SpringBoot之日期时间格式化

利用 jackson 的 json 序列化和反序列化

/**

* @author zhu

* @description: Jackson 配置

* @date 2020-05-12 15:15

*/

@Configuration

public class JacksonConfig {

private static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";

private static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";

private static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";

@Bean

public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {

MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();

ObjectMapper objectMapper = getObjectMapper();

converter.setObjectMapper(objectMapper);

return converter;

}

private ObjectMapper getObjectMapper() {

ObjectMapper objectMapper = new ObjectMapper();

// 忽略 JSON 字符串中不识别的属性

objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

// 忽略无法转换的对象

objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);

// PrettyPrinter 格式化输出

objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);

// NULL 不参与序列化

objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

// 指定时区

objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));

// 日期类型字符串处理

objectMapper.setDateFormat(new SimpleDateFormat(DEFAULT_DATE_TIME_FORMAT));

// Java8日期处理

JavaTimeModule javaTimeModule = new JavaTimeModule();

javaTimeModule.addSerializer(LocalDateTime.class,

new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)));

javaTimeModule.addSerializer(LocalDate.class,

new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)));

javaTimeModule.addSerializer(LocalTime.class,

new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));

javaTimeModule.addDeserializer(LocalDateTime.class,

new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)));

javaTimeModule.addDeserializer(LocalDate.class,

new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)));

javaTimeModule.addDeserializer(LocalTime.class,

new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));

objectMapper.registerModule(javaTimeModule);

return objectMapper;

}

}

总结:

支持 content-type=application/json 请求中格式为 yyyy-MM-dd HH:mm:ss 的字符串,后台用@RequestBody 接收,及返回值 Date 转为 yyyy-MM-dd HH:mm:ss 格式 String;

支持java8日期api;

不支持 content-type=application/json 请求中 yyyy-MM-dd 等类型的字符串转为 Date;

当 个别字段需使用 yyyy-MM-dd 格式时,可使用 SpringBoot 自带的注解 :

@JsonFormat(pattern = yyyy-MM-dd, timezone=GMT+8)

private Date sendDate;

SpringBoot 默认提供,功能强大,满足常见场景使用,并可指定时区。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值