当前位置: 首页 > wzjs >正文

性价比最高网站建设电话新东方在线网上课程

性价比最高网站建设电话,新东方在线网上课程,简述网站建设的过程,广州网站设计专注乐云seo背景: 解决前端传入时间参数格式不固定场景,避免接收参数报错时间格式不能序列化。 一、概述 在 Java 后端开发中,处理 JSON 数据时,经常需要对日期时间字段进行反序列化。Java 中常用的日期时间类型是 java.time.LocalDateTime&…

背景:

        解决前端传入时间参数格式不固定场景,避免接收参数报错时间格式不能序列化。

一、概述

        在 Java 后端开发中,处理 JSON 数据时,经常需要对日期时间字段进行反序列化。Java 中常用的日期时间类型是 java.time.LocalDateTime,但前端传入的数据格式可能千差万别,如 "2025-04-05"、"2025-04-05 13:30:00" 或者仅仅是一个时间字符串 "13:30:00"。为了应对这些灵活的时间格式,我们编写了一个自定义的 Jackson 反序列化器 —— FlexibleLocalDateTimeDeserializer

二、设计目标

FlexibleLocalDateTimeDeserializer 的主要目标是:

  1. 兼容多种时间格式:支持 yyyy-MM-dd、yyyy-MM-dd HH:mm:ss 和 HH:mm:ss。
  2. 避免反序列化失败:当遇到不规范的时间格式时,提供合理的默认行为或抛出明确错误。
  3. 与业务数据模型解耦:通过 Jackson 注解绑定到 DTO 字段,无需修改业务逻辑代码即可完成适配。

三、实现细节

通过正则表达式实现格式处理

    • 包含空格 → 使用完整日期时间格式;
    • 匹配日期格式 → 补上 23:59:59;
    • 匹配时间格式 → 结合当前日期生成完整时间戳

定义序列化处理工具


import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;public class FlexibleLocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss");@Overridepublic LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {String value = p.getText();if (value == null || ObjectUtil.isEmpty( value)) return null;try {if (value.contains(" ")) {return LocalDateTime.parse(value, DATE_TIME_FORMATTER);} else if (value.matches("\\d{4}-\\d{2}-\\d{2}")) {String s = LocalDate.parse(value, DATE_FORMATTER).toString() + " 23:59:59";LocalDateTime parse = LocalDateTime.parse(s, DATE_TIME_FORMATTER);return parse;
//                return LocalDate.parse(value, DATE_FORMATTER).atTime(LocalTime.MAX);  // 存数据库为第二天00:00:00} else if (value.matches("\\d{2}:\\d{2}:\\d{2}")) {LocalTime time = LocalTime.parse(value, TIME_FORMATTER);return LocalDateTime.now().with(time);}} catch (Exception e) {throw new RuntimeException("无法解析日期时间:" + value, e);}throw new RuntimeException("未知的日期格式:" + value);}
}

四、实际使用示

在接收前端的dto字段参数加上注解即可。这时候前端传入yyyy-MM-dd、yyyy-MM-dd HH:mm:ss 和 HH:mm:ss格式都可以接收,可自定义填充日期格式。

@JsonFormat(shape = JsonFormat.Shape.STRING)
@JsonDeserialize(using = FlexibleLocalDateTimeDeserializerZero.class)
private LocalDateTime startdate;@JsonFormat(shape = JsonFormat.Shape.STRING)
@JsonDeserialize(using = FlexibleLocalDateTimeDeserializer.class)
private LocalDateTime enddate;
http://www.dtcms.com/wzjs/203886.html

相关文章:

  • 网站建设要学哪些软件有哪些方面深圳网站推广
  • 计算机网站建设论文范文深圳关键词优化报价
  • 阿里云网站托管郑州有没有厉害的seo顾问
  • 网站开发公司巨推app拉新推广代理
  • 南阳网站建设口碑企业网站seo诊断报告
  • 程家桥街道网站建设1688如何搜索关键词排名
  • 工程承包公司关键词优化软件有哪些
  • 深圳市建设工程网站友情链接举例
  • 企业建站个人建站源码广告软文小故事800字
  • 中国国防建设网站世界羽联巡回赛总决赛
  • 什么电脑做网站前段用爱站seo工具包官网
  • 网站优秀党员宣传专栏怎么做百度推广广告收费标准
  • 唯一做魅惑的网站产品如何推广市场
  • 免费的网站域名查询方法有哪些搜索引擎app
  • 买书的网站排名网络营销知识
  • remote publishing wordpress如何优化网站推广
  • 网站动画效果怎么做的奉化seo页面优化外包
  • 上海网站建设-网建知识网站推广关键词排名优化
  • 景点旅游网站开发与设计成都网站建设制作公司
  • 小程序登录入口官网网址西seo优化排名
  • 北京网站建设公司内江网站seo优化工具
  • uc浏览器访问网站北京云无限优化
  • 手机网站模板 导航什么是域名
  • 专业的基础微网站开发搜索引擎网页
  • 哪个网站专门做代购学电脑培训班多少一个月
  • 新纪实网站建设重庆seo点击工具
  • 网站会说话写软文平台
  • wordpress源代码编辑器湖北seo推广
  • 通辽企业网站建设网络广告策划案例
  • 做蛋糕的网站集客营销软件