@JsonFormat将时间字符串2021-02-25T15:32:54+08:00解析成date

@JsonFormat将时间字符串2021-02-25T15:32:54+08:00解析成date

由于对接硬件,硬件返回的json字符串中,其中有时间字段的字符串为2021-02-25T15:32:54+08:00,UTC(世界协调时间格式),然后疯狂百度,看看如何将utc格式的时间转换成DATE,然后看到网上的各位大佬们大都使用以下几种方式

DateTime dt1=DateTime.ParseExact("2013-11-17T11:59:22+08:00","yyyy-MM-ddTHH:mm:sszzz",new System.Globalization.CultureInfo("en-us"));

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");  //yyyy-MM-dd'T'HH:mm:ss.SSSZ
  Date  date = df.parse(oldDateStr);

但是由于我是使用的实体类作为json接收对象,不太想进行二次转换,然后想到是否可以偷个懒,直接使用fastjson的 @JsonFormat来进行时间格式化呢,说干就干由于之前解析都为正常的格式如下

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

于是就仿照着时间格式,不就是中间加了个T那我也加上

@JsonFormat(pattern = "yyyy-MM-ddTHH:mm:ss",timezone = "GMT+8")

加上了T之后解析果断不报错,心里一阵窃喜,然而输出时间作为验证的时候,直接解析异常,然后疯狂百度无果,但是不死心啊,明明可以解析了为啥输出会报错呢,突然灵机一动,参考博客园某老哥的文章发现new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss.SSSXXX”);
它的时间格式中T加上了一个单引号,说干就干,我也加上了单引号结果如下

@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss",timezone = "GMT+8")

果断转换成功,有机智的偷了一次懒,开心
测试输出如下:
System.out.println(testDate.getCeshi());//结果:Thu Feb 25 15:32:54 CST 2021
System.out.println(testDate.getCeshi().getTime());//结果:1614238374000

你可能感兴趣的:(json)