1. 案例

添加一个学生,前端把生日传给后端,后端使用Datel类型接收到后,然后调用其它服务进行保存入库。

与其它服务交互时,使用的是JSON格式,出现日期少一天。

@Data
@AllArgsConstructor
public class Student { @JsonFormat(pattern = "yyyy-MM-dd")
private Date birthday; }
    @Test
public void test1() throws Exception {
// String 转 Date
String date = "1990-06-01";
Date birthday = DateUtils.parseDateStrictly(date, "yyyy-MM-dd");
System.out.println("birthday:" + birthday);
// 创建对象
Student student = new Student(birthday);
ObjectMapper mapper = new ObjectMapper();
// 对象转JSON串
System.out.println("student:" + mapper.writeValueAsString(student));
}

控制台输出结果:

birthday:Fri Jun 01 00:00:00 CDT 1990
student:{"birthday":"1990-05-31"}

2. 原因

两个关键点:1.birthday输出带有CDT;2、日期是1990-06-01

CDT: 夏令时标志(一般在天亮早的夏季人为将时间调快一小时)

1986年至1991年,中华人民共和国在全国范围实行了六年夏令时(具体请咨询百度)

3. 解决方案

1. 统一使用字符串交互,在开发中仅在Entity(与数据库表对应的)中出现Date,其它场景统一使用String -- 推荐

2.Jackson 换成 Fastjson

3. 添加JVM参数-Duser.timezone=GMT+8(网上说的,我们项目使用k8s部署,试了没啥用) -- 不推荐

Jackson日期转换少一天的更多相关文章

  1. spring mvc4使用及json 日期转换解决方案

    spring mvc使用注解方式配制,以及对rest风格的支持,真是完美致极.下面将这两天研究到的问题做个总结,供参考.1.request对象的获取方式1:在controller方法上加入reques ...

  2. SpringMVC配置全局日期转换器,处理日期转换异常

    Spring 3.1.1使用Mvc配置全局日期转换器,处理日期转换异常链接地址: https://www.2cto.com/kf/201308/236837.html spring3.0配置日期转换可 ...

  3. springMvc的日期转换之二

    方式一:使用@InitBinder注解实现日期转换 前台页面: 后台打印: 方式二:处理多种日期格式类型之间的转换 采用方式:由于binder.registerCustomEditor(Date.cl ...

  4. Struts2中Date日期转换的问题

      今天跑程序的时候莫名其妙的出现了下面的一个异常: java.lang.NoSuchMethodException:com.ca.agent.model.mybatis.ApprovalInforC ...

  5. Js 日期转换函数(UTC时间转换及日期想加减)

    IOS上Js日期转换中new Date("yyyy-mm-dd")不能正常工作,必须使用new Date("yyyy/MM/dd"); 日期相加减: Date. ...

  6. json日期转换

    //调用 ChangeDateFormat(CreatTime) //json日期转换 function ChangeDateFormat(jsondate) { jsondate = jsondat ...

  7. MySql和Oracle的日期转换到底有哪些不同?我们来比较一下

    1.MySql和Oracle的日期转换 mysql中有2种日期格式DATE和TIME,oracle只有一种日期格式DATE. oracle> select to_char(sysdate,'yy ...

  8. AngularJS 日期转换字符串

    日期转换成字符串的办法有很多种,其中最简单的方法是 使用AngularJS的filter来实现. $filter('date')(date, 'yyyyMM'): $filter('date')(da ...

  9. 使用DateUtils和DateFormatUtils处理时间日期转换与SimpleDateFormat的区别

    在Apache Commons项目的Lang里面,有两个类:DateUtils和DateFormatUtils,专门用于处理时间日期转换.它们在 org.apache.commons.lang.tim ...

随机推荐

  1. 为什么说 Java 程序员必须掌握 Spring Boot ?(转)

    Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,那么, Spring Boot 诞生的背景是什么?Spring 企业又是基于什么样的考虑创建 Spring Boot ...

  2. 简单说一下你对http和https的理解

    http是一种超文本传输协议,传输的数据都是未加密的,也就是显示在明面上的,是现在互联网上应用最为广泛的一种网络协议,相对来说不太安全,但是所需成本很小.http一般的端口号为80. https则是具 ...

  3. spring aop 之链式调用

    关关雎鸠,在河之洲.窈窕淑女,君子好逑. 概述 AOP(Aspect Orient Programming),我们一般称为面向方面(切面)编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横 ...

  4. Java中的java.lang.Class API 详解

    且将新火试新茶,诗酒趁年华. 概述 Class是一个位于java.lang包下面的一个类,在Java中每个类实例都有对应的Class对象.类对象是由Java虚拟机(JVM)自动构造的. Class类的 ...

  5. MySQL5.7初始化后5种密码重置方法

    前言:由于好几次安装MySQL5.7后一直被重置密码所困扰,因此特意整理重置的方法 安装MySQL5.7 [root@node1 db]# ll 以下的rpm安装包可以随处下载 total 40235 ...

  6. C#中FileStream的对比以及使用方法

    场景 File与FileStream的区别 举例: 将读取文件比作是从A桶往B桶运水. 使用File就是整个用桶倒进去,使用FileStream就是使用水管慢慢输送. FileStream与Strea ...

  7. spring框架对于实体类复杂属性注入xml文件的配置

    spring框架是javaWeb项目中至关重要的一个框架,大多web 项目在工作层次上分为持久层.服务层.控制层.持久层(dao.mapper)用于连接数据库,完成项目与数据库中数据的传递:服务层(s ...

  8. 转:怎么用Sql语句获取一个数据库中的所有表的名字

    用sql获取数据库中所有的表名的方法:1.oracle下:select table_name from all_tables;2.MySQL下:select table_name from infor ...

  9. Vertx Future 异常处理

    Vertx Future 异常处理 异常发生 ​ 在使用Vertx进行开发的时候,必不可免使用Future异步编程框架.通过Future的 compose ,可以轻松实现不同异步任务的组合. ​ 但是 ...

  10. sublime_REPL使用及安装教程(解决Sublime无交互问题)

    谈到python编程工具能想到那些? pycharm?IDLE? Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等,还可自定义键绑定,菜单和工具栏. ...