Google GSON GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss")不能格式化Data

在项目中遇到问题,数据库中保存的时间类型为datetime(MySQL),实体类中对应数据类型为java.sql.Date,利用GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss")构造gson对象向客户端输出json字符串。忽一日客户端接收到的日期字段值为中文时间,大惊,彻查,疑为实体类中的数据类型不适合,导致Hibernate中的timestamp部分信息丢失,尝试着将实体类中类型改为java.sql.Timestamp,再试,成功。

另搜索到网上一哥们的其他解法,如下:

 首先创建一个类型适配器

  1. public class TimestampTypeAdapter implements JsonSerializer<Timestamp>, JsonDeserializer<Timestamp>{
  2. private final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  3. public JsonElement serialize(Timestamp ts, Type t, JsonSerializationContext jsc) {
  4. String dfString = format.format(new Date(ts.getTime()));
  5. return new JsonPrimitive(dfString);
  6. }
  7. public Timestamp deserialize(JsonElement json, Type t, JsonDeserializationContext jsc) throws JsonParseException {
  8. if (!(json instanceof JsonPrimitive)) {
  9. throw new JsonParseException("The date should be a string value");
  10. }
  11. try {
  12. Date date = format.parse(json.getAsString());
  13. return new Timestamp(date.getTime());
  14. } catch (ParseException e) {
  15. throw new JsonParseException(e);
  16. }
  17. }
  18. }

应用类型适配器

  1. GsonBuilder gsonBuilder = new GsonBuilder();
  2. gsonBuilder.setDateFormat("yyyy-MM-dd hh:mm:ss");
  3. gsonBuilder.registerTypeAdapter(Timestamp.class,new TimestampTypeAdapter());
  4. Gson GSON = gsonBuilder.create();
  5. String json = GSON.toJson(new Timestamp((new Date()).getTime()));

Google GSON GsonBuilder().setDateFormat(yyyy-MM-dd HH:mm:ss)不能格式化Data相关推荐

  1. 【怒怼老乔】苹果手机ios系统居然特喵的不支持日期yyyy-MM-dd HH:mm:ss.ms,只支持 yyyy/MM/dd HH:mm:ss

    苹果手机ios系统居然特喵的 不支持日期yyyy-MM-dd HH:mm:ss.ms, 只支持yyyy/MM/dd HH:mm:ss 我只能用 .replace(/\-/g,'\/'); 来替换掉了, ...

  2. Kettle5.2 couldn't convert string [...] to a date using format [yyyy/MM/dd HH:mm:ss.SSS]

    使用kettle出现 couldn't convert string [...] to a date using format [yyyy/MM/dd HH:mm:ss.SSS] 试了各种方法,最后发 ...

  3. C# 中的年月日时分秒 yyyy MM dd HH mm ss

    C# 中的年月日时分秒 yyyy MM dd HH mm ss 其中大小写含义不同,不能混用 年:yyyy 月:MM 日:dd(1-31) DD(0-365) 时:hh:12小时制 HH:24小时制 ...

  4. 时间格式区别之YYYY/MM/dd HH:mm 与 yyyy/MM/dd HH:mm

    1. 相应的业务场景 1.1 场景简介 正值2019年末,2020年初之际,系统日期时间为2019/12/31而系统报表却出现了2020/12/31的日期. 1.2 代码案例如下 2.Java中YYY ...

  5. spring boot + vue 前后端分离时间戳转换为 yyyy:MM:dd HH:mm:ss格式

    后端 1.model(entity)注释直接转换 当返回类型为resultMap,在entity类里面相应属性上加上以下注释 @JsonFormat(pattern="yyyy-MM-dd ...

  6. js时间格式化 YYYY/MM/DD HH:MM:SSS

    /*** 将"2018-05-19T08:04:52.000+0000"这种格式的时间转化为正常格式* @param time*/ function timeFormat(time ...

  7. java 通配符 日期_java – 使用带有通配符支持的SimpleDateFormat解析日期字符串(例如* yyyy * MM * dd * hh * mm * ss)...

    首先,我想知道是否存在类似于SimpleDateFormat但是支持通配符的现有库?如果没有,最好的办法是什么? 我有这个问题,我需要匹配并从文件名中提取日期,但我似乎无法找到适合这种情况的方法.虽然 ...

  8. 小程序日期格式(yyyy-MM-dd HH:mm:ss)转(yyyy/MM/dd HH:mm:ss)

    let newDate = (date).replace(/-/g, '/'); var date = new Date(newDate).getTime(); 转载于:https://www.cnb ...

  9. java date eee_java将 Date原始格式EEE MMM dd HH:mm:ss Z yyyy转成指定格式

    java将 Date原始格式"EEE MMM dd HH:mm:ss Z yyyy"转成指定格式 //将 Date原始格式"EEE MMM dd HH:mm:ss Z y ...

最新文章

  1. servlet response 中文乱码
  2. 继承SectionIndexer,实现联系人侧边栏
  3. Python学习之函数及流程控制
  4. XCTF WEB webshell
  5. 在路上(on the road)
  6. Android的ADB工具使用
  7. 怎么将matlab滤波器系数导出_matlab与FPGA数字信号处理系列(1)——通过matlab工具箱设计FIR数字滤波器...
  8. 英语 用on还是/at/还是in
  9. 三点外接圆_故地重游伪切圆——伪外接圆的基本性质
  10. 这家武汉工厂如果停工,全球都不答应
  11. (转)getElementByID getElementsByName getElementsByTagName用法详解
  12. 带你了解FPGA(5)--Verilog书写规范
  13. python __del__
  14. pythonATM,购物车项目实战6-用户登录功能的实现
  15. 专业能力与行业价值 IBM在华的商业人工智能实践
  16. NOD32病毒库自动更新代码
  17. java基础——数据库
  18. 微信小程序学习笔记:选项卡
  19. 计算机计划实施800字,大学计划书范文800字3篇
  20. 光流传感器 定位精度_基于光流传感器的移动机器人定位方法

热门文章

  1. VC MFC 调试信息 DebugView
  2. python二级证书考试难度_全国计算机等级考试 python二级考试体验及小技巧总结...
  3. Sqoop的基本使用
  4. 离线数仓建设及技术选型
  5. 数理统计-6.1 点估计的概念与无偏性
  6. 【仿真】羽毛球空气动力学运动方程分析
  7. XSS攻击和CSRF攻击及其区别
  8. vim自定义设置-配置文件
  9. Python进行零售商品数据分析
  10. jdk API下载(英文的)