使用Jackson的databind查询日期时间数据转json,显示在前端差8个小时

【问题描述】升级json转换组件的时候,偶然发现时间不对。 查8个小时。


【解决过程】百度, 然后找到2个帖子,原来人家都遇到过了。

方法1: http://blog.csdn.net/thc1987/article/details/43851939

方法2:http://blog.csdn.net/zhangkezhi_471885889/article/details/49928663


-------------------------------【方法1】---------------------------------------------------------------------------------------

使用Jackson的@JsonFormat注解时出现少一天

比如数据库存的日期是2015-01-05,转成json则变成了2015-01-04

解决办法:

@JsonFormat(pattern="yyyy-MM-dd")
 public Date getRegistDate() {
  return this.registDate;
 }

改成

@JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
 public Date getRegistDate() {
  return this.registDate;
 }

加上时区即可,中国是东八区


-------------------------------【方法2--全局解决,我还没试】-----------------------------------------------

<mvc:annotation-driven>
        <mvc:message-converters>
            <bean
                class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="com.fasterxml.jackson.databind.ObjectMapper">
                        <!-- 处理responseBody 里面日期类型 -->
                        <property name="dateFormat">
                            <bean class="java.text.SimpleDateFormat">
                                <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />
                            </bean>
                        </property>
                        <!-- 时区指定 -->
                        <property name="timeZone" value="GMT+8" />
                        <!-- 为null字段时不显示 -->
                        <property name="serializationInclusion">
                            <value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value>
                        </property>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值