关于日期类型显示格式问题

最后更新:2024-02-02 12:25:40 | 状态:未完成
如 关于查询结果集中不显示秒的问题
数据库中数据类型datetime
查询结果显示2023-05-25T07:00(不同的环境显示格式可能不一样)
有时候会发现没有秒

是因为数据库存储的本来也不是String格式,而是一个时间戳,在显示时需要经过toString转换,转换成什么格式就不一定了。

这通过是跟LocalTime的显示有关,在秒=0时,秒不显示(小时与分无论是不是0都显示)
返回结果会封装到LocalDateTime类型中(其中又包含了一个LocalDate和一个LocalTime)

当然在给前端显示时不应该直接返回LocalDateTime类型 应该格式化成明确的String

DataSet、DataRow中都提供了格式化的方法,如 set.format.date("yyyy-MM-dd HH:mm:ss", "JOIN_TIME", "WORK_TIME"...)


一般项目中会有JSON工具,在返回给前端时会经过JSON格式化,可以通过JSON工具统一配置
如jackson这样配置
ObjectMapper JSON_MAPPER = new ObjectMapper();
DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss");
JSON_MAPPER.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
JSON_MAPPER.setSerializationInclusion(JsonInclude.Include.ALWAYS);

// Include.Include.ALWAYS 默认
// Include.NON_DEFAULT 属性为默认值不序列化
// Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化
// Include.NON_NULL 属性为NULL 不序列化

JSON_MAPPER.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
JSON_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
JSON_MAPPER.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
JSON_MAPPER.configure(SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS, false);

JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DATETIME_FORMATTER));
javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DATE_FORMATTER));
javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(TIME_FORMATTER));
javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DATETIME_FORMATTER));
javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DATE_FORMATTER));
javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(TIME_FORMATTER));
JSON_MAPPER.registerModule(javaTimeModule);
JSON_MAPPER.setTimeZone(TimeZone.getDefault());

最近更新 搜索 提交