• 请不要在回答技术问题时复制粘贴 AI 生成的内容
duojiao
V2EX  ›  程序员

Java 的 2020 年最后一天日期出 bug 了?这是什么底层原理?

  •  1
     
  •   duojiao · Dec 31, 2020 · 6994 views
    This topic created in 2133 days ago, the information mentioned may be changed or developed.

    jshell> import java.text.SimpleDateFormat;

    jshell> void test(){ SimpleDateFormat smf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"); String curTime = smf.format(new Date()); System.out.println(curTime); } | 已修改 方法 test()

    jshell> test(); 2021-12-31 13:57:11

    我和同事试了都是这样,你们也是吗, java8 编译模式和我的 java11 交互式都是这样

    Supplement 1  ·  Dec 31, 2020

    哈哈我是傻了才发了个年经贴,那就祝大家元旦快乐吧🐶🐶

    Supplement 2  ·  Dec 31, 2020

    突然有点感叹,这些睿智问题就是这样一年又一年陪着我们过来。

    37 replies  •  2021-01-01 15:03:06 +08:00
    Asuka0947
    Asuka0947
    Dec 31, 2020
    1
    YYYY 和 yyyy 不一样的,YYYY 按周算,跨年了,这周算 2021 年
    MineDog
    MineDog
    Dec 31, 2020
    2
    YYYY 大写的问题吧
    hahastudio
    hahastudio
    Dec 31, 2020
    3
    /t/633650
    年经
    ion1ze
    ion1ze
    Dec 31, 2020
    4
    YYYY 大写是当周的年份
    ebony0319
    ebony0319
    Dec 31, 2020 via Android
    5
    同学,这是语感问题,上次我拿的那个这个问同事,听说不知道 YYYY 是什么,但是肯定不会写 YYYY.
    arloor
    arloor
    Dec 31, 2020
    6
    你这个问题,每年都能出来
    去年我就在文章里看到了
    yaphets666
    yaphets666
    Dec 31, 2020
    7
    这个问题去年出过啊 v2 也讲过
    bk201
    bk201
    Dec 31, 2020❤️1
    9
    我是不明白为啥 java 源码里 老搞这些令人混淆犯错的东西
    Vegetable
    Vegetable
    Dec 31, 2020❤️2
    10
    年经贴
    yuk1no
    yuk1no
    Dec 31, 2020 via iPhone
    11
    都 1202 年了 别用 SimpleDateFormat 了
    zm8m93Q1e5otOC69
    zm8m93Q1e5otOC69
    Dec 31, 2020 via Android
    12
    用 DateTimeFormatter
    wysnylc
    wysnylc
    Dec 31, 2020
    13
    @bk201 #9
    盲人不要写代码
    chendy
    chendy
    Dec 31, 2020❤️1
    14
    YYYY 是按周算的,只要有一天在下一年,这一周就是下一年的第一周,于是这周就已经到了下一年
    PiersSoCool
    PiersSoCool
    Dec 31, 2020
    15
    用啥都没区别,就是 YYYY 和 yyyy 的问题
    话说这种垃圾设计是怎么变成标准的 这区分度也太低了 太容易用错了吧
    duojiao
    duojiao
    OP
    Dec 31, 2020❤️1
    16
    懂了,谢谢各位,傻了发了年经贴哈哈
    wysnylc
    wysnylc
    Dec 31, 2020
    17

    每年都会有新同学来问,但是不肯看文档
    wysnylc
    wysnylc
    Dec 31, 2020
    18
    @PiersSoCool #15 我觉得是人的问题,分的清楚 MM 和 mm HH 和 hh,却把 YYYY 当成 yyyy?这是思维割裂了吗?
    不懂 MM 和 mm HH 和 hh 的区别啊,那没事了
    24KPureFather
    24KPureFather
    Dec 31, 2020❤️4
    19
    我在 idea 里面把你的 test() 方法中的代码跑一了一边,确实会出现 2021-12-31 13:57:11 这个结果,但是 idea 会给你警告 Uppercase 'YYYY' (week year) pattern is used: probably 'yyyy' (year) was intended 的,把 YYYY 改成小写的 yyyy 就好了,idea 提醒真香~
    javen73
    javen73
    Dec 31, 2020
    20
    @hahastudio #3 哈哈哈,我说这个标题怎么这么熟悉。
    JinTianYi456
    JinTianYi456
    Dec 31, 2020
    21
    “年轻人不讲武德”,请看仔细了文档再编程 [doge]
    JinTianYi456
    JinTianYi456
    Dec 31, 2020
    22
    @wysnylc #17 那是什么网站?
    Jooooooooo
    Jooooooooo
    Dec 31, 2020
    23
    一年又一年

    又到年底了
    hodur
    hodur
    Dec 31, 2020
    24
    也算是年经问题了,每年年底都冒出来
    glasslion
    glasslion
    Dec 31, 2020
    25
    @wysnylc 就是不良设计。如果分不清 MM mm, HH hh, 在调试,测试时立马可以发现, 但 YYYY 每年就几天可以重现。
    wysnylc
    wysnylc
    Dec 31, 2020
    26
    @glasslion #25 HH 和 hh 一样难以发现,如果测试的时间在 0-12 点这二者没有区别
    别再为不严谨,不看文档找借口了
    lskjdfgl
    lskjdfgl
    Dec 31, 2020
    27
    @beichenhpy 同样也有这个问题
    // 2020-12-31
    System.out.println(DateTimeFormatter.ofPattern("yyyy-MM-dd").format(LocalDate.now()));

    // 2021-12-31
    System.out.println(DateTimeFormatter.ofPattern("YYYY-MM-dd").format(LocalDate.now()));
    rodneya
    rodneya
    Dec 31, 2020
    28
    去年我也赶上了一次,,还是线上系统 都快下班了 结果临时加班,,,
    NickYUyu
    NickYUyu
    Dec 31, 2020
    29
    好快啊 一年就过去了
    axbx
    axbx
    Dec 31, 2020
    30
    @bk201 历史的包袱
    jintianfengda
    jintianfengda
    Dec 31, 2020
    31
    看到这个问题我就知道,又是新的一年了
    wc951
    wc951
    Dec 31, 2020 via Android
    32
    这是 ISO8061 的规定
    fangcan
    fangcan
    Dec 31, 2020
    33
    前几天刚好也遇到这个问题
    pigmen
    pigmen
    Dec 31, 2020
    34
    这么一看 go 的 format 还是香
    ddllzz
    ddllzz
    Dec 31, 2020
    35
    hhhh,一年又过去了
    EminemW
    EminemW
    Jan 1, 2021
    36
    这问题,犯过一次就不能再犯了,一般都用 yyyy
    sampeng
    sampeng
    Jan 1, 2021 via iPhone
    37
    昨天晚上我还检查了公司所有重要代码库看有没有这个问题,很欣慰。没有,到晚上就招受了社会的毒打…合作伙伴传过来的有一些就是 2021 年…蛋疼得不行。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1608 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 117ms · UTC 23:32 · PVG 07:32 · LAX 15:32 · JFK 18:32
    ♥ Do have faith in what you're doing.