背景
前端让返回的时间格式 HH:mm:ss 举例:HH:mm:ss
实现思路
返回的字段使用 JsonSerialize, 指定自定义日期转换类将 Date 转换为 LocalDateTime格式化时间代码
dto类
/*** 执行时间*/@JsonSerialize(using = DateToTimeSerializer.class)private Date executeTime;
DateToTimeSerializer类
/*** DateToTimeSerializer* @description 截取时间的 HH:mm:ss* @author daleyzou* @date 02月15日 2:23 下午*/public class DateToTimeSerializer extends JsonSerializer<Date> {@Overridepublic void serialize(Date date, JsonGenerator gen, SerializerProvider serializers) throws IOException {// 截取时间的 HH:mm:ssInstant instant = date.toInstant();ZoneId zoneId = ZoneId.of("+8");LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();String dateTimeStr = localDateTime.format(DateTimeFormatter.ofPattern("HH:mm:ss"));gen.writeString(dateTimeStr);}}
测试类
/*** DateTimeTest* @description 时间测试类* @author zoudaifa* @date 02月15日 2:50 下午*/public class DateTimeTest {@Testpublic void timeTest() throws ParseException {String dateStr = "-02-15 14:39:32";Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateStr);Instant instant = date.toInstant();ZoneId zoneId = ZoneId.of("+8");LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();String dateTimeStr = localDateTime.format(DateTimeFormatter.ofPattern("HH:mm:ss"));System.out.println(dateTimeStr);}}
后来发现的链接/questions/27247767/jackson-custom-date-serializer#