• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:一个-YYYYMMdd-引发的惨案-元旦来临前警惕

java 搞代码 3年前 (2022-01-27) 39次浏览 已收录 0个评论

起源:https://www.gaodaima.com/weixin_…

一、前言

在元旦假期到来之际,我刚好筹备进来飘几天,然而在应用一些 App 的时候,居然被我发现了一个应该是因为前端大意而导致的 bug,在 2019.12.30 登程,后果 App 上显示的是 2020.12.30(吓得我认为我的订单下错了,此处是不是该把程序员拉去祭天了)。

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

二、注释

咱们先看下案例

public class DateTest {

    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("2019-08-31 to yyyy-MM-dd: " + formatUpperCase.format(strDate));
        formatUpperCase = new SimpleDateFormat("YYYY-MM-dd");
        System.out.println("2019-08-31 to YYYY/MM/dd: " + formatUpperCase.format(strDate));
    }
}

看下运行后果:

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

如果咱们日期改成 12.31:

2019-12-31 to yyyy-MM-dd: 2019-12-31
2019-12-31 to YYYY-MM-dd: 2020-12-31
问题就呈现了是吧,尽管是一个小小的细节,然而用户看了也会一脸懵,然而咱们作为开发者,不能懵啊,连忙文档查起来:

y:year-of-era;正正经经的年,即除夕过后;Y:week-based-year;只有本周跨年,那么这周就算入下一年;就比如说往年(2019-2020) 12.31 这一周是跨年的一周,而 12.31 是周二,那应用 YYYY 的话会显示 2020,应用 yyyy 则会从 1.1 才开始算是 2020。

这尽管是个很小的知识点,然而也有很多人栽到坑里,各位学完能够记录一下咯,感觉好的还能够点个赞关注一下。我在这里祝福各位码代码时如有神助,永远没有 bug~

近期热文举荐:

1.1,000+ 道 Java面试题及答案整顿(2022最新版)

2.劲爆!Java 协程要来了。。。

3.Spring Boot 2.x 教程,太全了!

4.Spring Boot 2.6 正式公布,一大波新个性。。

5.《Java开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞+转发哦!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:一个-YYYYMMdd-引发的惨案-元旦来临前警惕

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址