<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)橛肶YYY-MM-dd 被錘了...

          共 1421字,需瀏覽 3分鐘

           ·

          2021-01-14 11:18

          還記得去年分享過一篇日期格式化使用 YYYY-MM-dd 的潛在問題(鏈接如下:http://blog.didispace.com/something-about-YYYY-MM-dd/)的文章不?
          歷史又重演了...


          事故現(xiàn)場


          我們先來寫個(gè)單元測試,重現(xiàn)一下這個(gè)問題。
          測試邏輯:
          • 1、創(chuàng)建兩個(gè)日期格式化,一個(gè)是出問題的YYYY-MM-dd,另一個(gè)是正確用法yyyy-MM-dd
          • 2、分別去格式化兩個(gè)不同的日期:2020年12月26日(周六),2020年12月27日(周日)
          具體代碼如下:
          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();?
          ????
          ????//?2020年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()));?
          ????
          ????//?分割線?
          ????System.out.println("========================");?
          ????//?2020年12月27日?周日?
          ????c.add(Calendar.DATE,?1);?
          ????System.out.println("YYYY-MM-dd?=?"?+?df1.format(c.getTime()));?
          ????System.out.println("yyyy-MM-dd?=?"?+?df2.format(c.getTime()));?
          ??}?
          }

          跑一下測試,可以看到輸出結(jié)果如下:
          YYYY-MM-dd?=?2020-12-26?
          yyyy-MM-dd?=?2020-12-26?
          ========================?
          YYYY-MM-dd?=?2021-12-27?
          yyyy-MM-dd?=?2020-12-27

          • 2020年12月26日(周六),兩種格式化都正確
          • 2020年12月27日(周日),YYYY-MM-dd出了問題,年份到了2021年


          問題原因


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

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

          所以2020年12月27日那天在這種表述方式下就已經(jīng)到 2021 年了。
          而當(dāng)使用yyyy的時(shí)候,就還是 2020 年。


          瀏覽 35
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  亚洲丁香视先锋 | 99re伊人| 色九九九九 | 青青青青青青久久久久久久 | 国产特黄三级片 |