zoukankan      html  css  js  c++  java
  • JsonFormat格式化时间问题

    JsonFormat 用来格式化时间,一般用在实体类字段上格式化数据库查出的时间,例如

    @ApiModelProperty("生日")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthday;

    默认是标准时区的时间,会出现少8小时情况。需要添加 timezone = "GMT+8"

    @ApiModelProperty("生日")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date birthday;

    在开发过程中发现,在设置生日日期的情况下,前端设置的时间和返回的时间差一天,例如

    前端传值 : body:{"birthday":"1989-05-01","id":11}

    接口查询返回值 birthday:1989-04-30

    这个问题是夏令时导致的,从1986年到1991年的六个年度,除1986年因是实行夏时制的第一年,从5月4日开始到9月14日结束外,其它年份均按规定的时段施行,时间调快1小时。

    解决办法:若时间不关注时分秒 可以前端传入日期的时分秒设置一个固定值 ,如1989-05-01 02:00:00;  

    或者后端屏蔽原getter(@Getter(AccessLevel.NONE))   重写对应字段的getter方法:

        @ApiModelProperty("生日")
        @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
        @Getter(AccessLevel.NONE)
        private Date birthday;
        
        public Date getBirthday() {
            Date date = null;
            if (null != birthday) {
                birthday = DateUtil.offsetHour(birthday, 2);
                date = DateUtil.parse(DateUtil.format(birthday, "yyyy-MM-dd HH:mm:ss"));
            }
            return date;
        }
  • 相关阅读:
    命令实现linux和客户端文件上传下载
    python--linux上如何执行shell命令
    Eureka系列(一)Eureka功能介绍
    Eureka系列(七) 服务下线Server端具体实现
    编译时多态 与 运行时多态
    静态绑定(前期绑定) 与 动态绑定(后期绑定)
    重载 与 重写
    热点检测、方法内联、动态反优化
    数据库日志
    单例模式
  • 原文地址:https://www.cnblogs.com/wlong-blog/p/14903164.html
Copyright © 2011-2022 走看看