Java知网

  • 首页
  • Spring Boot
  • 面试精选
  • 程序人生
  • 资源
  • 友链
  • 关于我
  1. 首页
  2. Java
  3. 正文

一个由“ YYYY-MM-dd ”引发的惨案,元旦来临前的警惕

2021年12月30日 534点热度 1人点赞 0条评论

前言

在元旦假期到来之际,我刚好准备出去飘几天,然而在使用一些 App 的时候,竟然被我发现了一个应该是由于前端粗心而导致的 bug,在 2021.12.30 触发,结果 App 上显示的是 2022.12.30(吓得我以为我的订单下错了,此处是不是该把程序员拉去祭天了)。

鉴于可能会有程序员因此而被拉去祭天,而我以前学 Java 的时候就有留意过这个问题,所以我还是把这个问题拿出来说一下,希望能尽量避免这方面的粗心大意(毕竟这种问题也很难测出来)。

正文

public class Test {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(2019, Calendar.AUGUST, 31);
        Date strDate = calendar.getTime();
        DateFormat formatUpperCase = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println("2021-08-31 to yyyy-MM-dd: " + formatUpperCase.format(strDate));
        formatUpperCase = new SimpleDateFormat("YYYY-MM-dd");
        System.out.println("2021-08-31 to YYYY/MM/dd: " + formatUpperCase.format(strDate));
    }
}

我们来看下运行结果:

2021-08-31 to yyyy-MM-dd: 2021-08-31
2021-08-31 to YYYY/MM/dd: 2021-08-31

如果我们日期改成 12 月

public class DateTest {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(2019, Calendar.DECEMBER, 31);
        Date strDate = calendar.getTime();
        DateFormat formatUpperCase = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println("2021-08-31 to yyyy-MM-dd: " + formatUpperCase.format(strDate));
        formatUpperCase = new SimpleDateFormat("YYYY-MM-dd");
        System.out.println("2021-08-31 to YYYY/MM/dd: " + formatUpperCase.format(strDate));
    }
}

运行结果如下:

2021-12-31 to yyyy-MM-dd: 2021-12-31
2021-12-31 to YYYY-MM-dd: 2022-12-31

问题就出现了是吧,虽然是一个小小的细节,但是用户看了也会一脸懵,但是我们作为开发者,不能懵啊,赶紧文档查起来。

y:year-of-era;正正经经的年,即元旦过后;
Y:week-based-year;只要本周跨年,那么这周就算入下一年;

就比如说今年(2021-2022) 12.31 这一周是跨年的一周,而 12.31 是周五,那使用 YYYY 的话会显示 2022,使用 yyyy 则会从 1.1 才开始算是 2022。

这虽然是个很小的知识点,但是也有很多人栽到坑里,各位学完可以记录一下咯,觉得好的还可以点个赞关注一下。我在这里祝愿各位码代码时如有神助,永远没有 bug~

相关文章:

  1. B站尚硅谷Java入门视频教程学习笔记-程序流程控制
  2. 这些线程安全的坑,你都踩了吗?
标签: 暂无
最后更新:2021年12月30日

javatip

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

取消回复
搜一搜
扫一扫
    关注公众号
  • 技术干货推送
  • 免费资料领取
  • 定时福利发放
分类
  • Java / 110篇
  • Mysql / 17篇
  • Redis / 10篇
  • Spring Boot / 29篇
  • Spring Cloud / 16篇
  • 消息队列 / 14篇
  • 程序人生 / 21篇
  • 资源 / 4篇
  • 面试 / 23篇
归档
  • 2022年7月 / 1篇
  • 2022年4月 / 1篇
  • 2022年1月 / 1篇
  • 2021年12月 / 9篇
  • 2021年11月 / 2篇
  • 2021年9月 / 10篇
  • 2021年8月 / 4篇
  • 2021年7月 / 2篇
  • 2021年6月 / 10篇
  • 2021年5月 / 18篇
  • 2021年4月 / 75篇
  • 2021年3月 / 78篇

COPYRIGHT © 2021 javatip.cn. ALL RIGHTS RESERVED.

陇ICP备19004310号-2

甘公网安备 62010202003150号