<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          又雙叒有兄弟因?yàn)?YYYY-MM-dd 被叫去加班了...

          共 2143字,需瀏覽 5分鐘

           ·

          2021-12-28 15:28

          今天上海降溫到零下了,一點(diǎn)起床的欲望都沒(méi),想著直接睡到吃午飯吧。結(jié)果看到群里小伙伴吐槽一早被叫起來(lái)修Bug,定睛一看,要修的BUG居然又是之前說(shuō)過(guò)很多次的YYYY-MM-dd問(wèn)題,這個(gè)不是之前已經(jīng)說(shuō)過(guò)很多次了嗎https://blog.didispace.com/YYYY-MM-dd-2020-again/),怎么還有人中招呢

           

          不過(guò)再想想,其實(shí)也正常,每一年都有新人,即使是老人,也可能因?yàn)樘劢邮忠呀?jīng)存在問(wèn)題的系統(tǒng),當(dāng)然也可能沒(méi)關(guān)注DD,沒(méi)看過(guò)之前的推送  ?不管什么原因,也許現(xiàn)在還有其他小伙伴正在修Bug的路上,所以,趕緊起床推一篇,聊聊這個(gè)問(wèn)題吧。

          如果你正好碰到的,可以看看了解下原因,做好相應(yīng)的處理;如果還沒(méi)碰到的,最好也自查一下。如果你已經(jīng)很了解這個(gè),那么把這篇文章分享到朋友圈,也提醒下身邊其他的同行朋友們吧,也許會(huì)炸出幾個(gè)正在修Bug路上的兄弟 

          事故現(xiàn)場(chǎng)

          我們先來(lái)寫個(gè)單元測(cè)試,重現(xiàn)一下這個(gè)問(wèn)題。

          測(cè)試邏輯:

          • 1、創(chuàng)建兩個(gè)日期格式化:
            • 一個(gè)是存在問(wèn)題的YYYY-MM-dd
            • 另一個(gè)是正確用法yyyy-MM-dd
          • 2、分別去格式化兩個(gè)不同的日期:2021年12月25日(周六),2020年12月26日(周日)

          具體代碼如下:

          public class Tests { 

          @Test
          public void test() throws Exception {
          SimpleDateFormat df1 = new SimpleDateFormat("YYYY-MM-dd");
          SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");

          Calendar c = Calendar.getInstance();
          c.set(Calendar.YEAR, 2021);
          c.set(Calendar.MONTH, 11);

          // 2021年12月25日周六
          c.set(Calendar.DATE, 25);
          System.out.println("YYYY-MM-dd = " + df1.format(c.getTime()));
          System.out.println("yyyy-MM-dd = " + df2.format(c.getTime()));

          // 分割線
          System.out.println("========================");

          // 2021年12月26日 周日
          c.set(Calendar.DATE, 26);
          System.out.println("YYYY-MM-dd = " + df1.format(c.getTime()));
          System.out.println("yyyy-MM-dd = " + df2.format(c.getTime()));
          }

          }

          跑一下測(cè)試,可以看到輸出結(jié)果如下:

          YYYY-MM-dd = 2021-12-25
          yyyy-MM-dd = 2021-12-25
          ========================
          YYYY-MM-dd = 2022-12-26
          yyyy-MM-dd = 2021-12-26
          • 2021年12月25日(周六),兩種格式化都正確
          • 2021年12月26日(周日),YYYY-MM-dd出了問(wèn)題,年份到了2022年

          問(wèn)題原因

          為什么YYYY-MM-dd格式化2021年12月26日的時(shí)候,會(huì)到2022年呢?

          因?yàn)閅YYY是week-based-year,表示:當(dāng)天所在的周屬于的年份,一周從周日開(kāi)始,周六結(jié)束,只要本周跨年,那么這周就算入下一年。

          所以2021年12月26日那天在這種表述方式下就已經(jīng)到 2022年了。

          而當(dāng)使用yyyy的時(shí)候,就還是 2021 年。

          好了,最后把這篇文章分享到朋友圈,提醒下身邊其他的小伙伴吧,看看能炸出幾個(gè)今天再修Bug路上的兄弟 

          最后的最后,平時(shí)喜歡討論技術(shù)的小伙伴也可以加入我們的高質(zhì)量技術(shù)交流群,與優(yōu)秀的人在一起,自己也會(huì)優(yōu)秀起來(lái),點(diǎn)擊加入



          往期推薦



          SQL 為什么動(dòng)不動(dòng)就 N 百行以 K 計(jì)

          Java 18 都要來(lái)了,你不會(huì)還在用Java 8吧?

          Log4j2 消停了,Logback 開(kāi)始塌房了?

          前瞻:Spring 6.0將停止支持Freemarker和JSP

          Spring Boot Admin 2.5.5 發(fā)布,支持在線重啟服務(wù)


          了解行業(yè)熱點(diǎn)、探索技術(shù)前沿

          技術(shù)人的彎道超車從關(guān)注程序猿DD開(kāi)始

          這有份來(lái)自阿里大佬的《LeetCode刷題答案》PDF新鮮出爐

          年末面試必備!點(diǎn)擊直接領(lǐng)取吧

          瀏覽 46
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  什么网址可以在线看国产毛片 | 国产精品人妻无码八区牛牛 | 无码日逼| 天堂网站黄 | 久久黄色免费 |