记一次年底因为时间格式而爆发的bug

262 阅读1分钟

起因

就在此时此刻接到领导电话说数据里的订单日期怎么突然变成了2021年,是不是服务器时间不对,马上从床上弹了起来看。

发现

立马查看服务器时间,发现没有问题,就是2020年,翻看代码,由于是二手代码,里面不敢擅自动手,一路跟订单日期字段,找到了位置,单独拿出来跑了下。发现当前日期获取字符串用那个方法获取的就是2021年 当时傻眼了。

代码:

public class Test {

    public static void main(String[] args) {
        SimpleDateFormat sdfTime = new SimpleDateFormat("YYYYMMddHHmmss");

        String time = sdfTime.format(new Date());

        System.out.println(time);
    }
}

运行结果:

image-20201227171150519

情况不妙,赶紧了解下这个SimpleDateFormat大哥咋回事。

原来YYYY 和yyyy 不是一回事。。

y 是Year, Y 表示的是Week year,Week year 意思是当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。

调整后结果正常了 wofυcк乄

总结

虽然是小东西 但是影响是巨大的,而且一年才能发现一次,对待日期 慎之慎之。。。