最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中日期格式化YYYY-DD的操作bug

 更新時(shí)間:2020年01月06日 13:58:27   作者:兔子托尼啊  
這篇文章主要介紹了Java中日期格式化YYYY-DD中遇到的坑,本文給大家分享到腳本之家平臺(tái),需要的朋友可以參考下

寫這篇博文是記錄下跨年的bug。去年隔壁組的小伙伴就是計(jì)算兩個(gè)日期之間間隔的天數(shù),因?yàn)榭缒甑脑蛴?jì)算有誤。

當(dāng)時(shí)測試組的小姐姐也沒有模擬出來這種場景,導(dǎo)致上生產(chǎn)環(huán)境直接影響線上的數(shù)據(jù)。

今天逛技術(shù)論論壇正好遇到Java日期的操作bug。

1 yyyy 和 YYYY

別看字,看代碼

@Test
 public void testWeekBasedYear() {
 Calendar calendar = Calendar.getInstance();
 // 2019-12-31
 calendar.set(2019, Calendar.DECEMBER, 31);
 Date strDate1 = calendar.getTime();
 // 2020-01-01
 calendar.set(2020, Calendar.JANUARY, 1);
 Date strDate2 = calendar.getTime();
 // 大寫 YYYY
 SimpleDateFormat formatYYYY = new SimpleDateFormat("YYYY/MM/dd");
 System.out.println("2019-12-31 轉(zhuǎn) YYYY/MM/dd 格式: " + formatYYYY.format(strDate1));
 System.out.println("2020-01-01 轉(zhuǎn) YYYY/MM/dd 格式: " + formatYYYY.format(strDate2));
 // 小寫 YYYY
 SimpleDateFormat formatyyyy = new SimpleDateFormat("yyyy/MM/dd");
 System.out.println("2019-12-31 轉(zhuǎn) yyyy/MM/dd 格式: " + formatyyyy.format(strDate1));
 System.out.println("2020-01-01 轉(zhuǎn) yyyy/MM/dd 格式: " + formatyyyy.format(strDate2));
 }

輸出結(jié)果

2019-12-31 轉(zhuǎn) YYYY/MM/dd 格式: 2020/12/31
2020-01-01 轉(zhuǎn) YYYY/MM/dd 格式: 2020/01/01
2019-12-31 轉(zhuǎn) yyyy/MM/dd 格式: 2019/12/31
2020-01-01 轉(zhuǎn) yyyy/MM/dd 格式: 2020/01/01

細(xì)心的同學(xué)應(yīng)該發(fā)現(xiàn)了2019-12-31用YYYY/MM/dd
此刻變成了2020/12/31

??為何呢?YYYY這么大的能耐,能跑到2020年代去?

我2019年底買的東西,你如果用YYYY來格式化出庫日期,我是不是得到2020年底才能收到貨? 此bug問題挺大的呀!

YYYY 到底是何方妖怪?👺

Java's DateTimeFormatter pattern "YYYY" gives you the week-based-year, (by default, ISO-8601 standard) the year of the Thursday of that week.

例子:

下面就是用YYYY格式化代碼

12/29/2019 將會(huì)格式化到2019年 這一周還屬于2019年
12/30/2019 將會(huì)格式化到2020年 這一周已經(jīng)屬于2020年

看字說話YYYY,week-based year 是 ISO 8601 規(guī)定的。

2019-12-31號(hào)這一天,安周算年份已經(jīng)屬于2020年了,格式化之后就變成2020年,后面的月份日期不變。

2 dd 和 DD

 private static void tryit(int Y, int M, int D, String pat) {
 DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pat);
 LocalDate  dat = LocalDate.of(Y,M,D);
 String  str = fmt.format(dat);
 System.out.printf("Y=%04d M=%02d D=%02d " +
  "formatted with " +
  "\"%s\" -> %s\n",Y,M,D,pat,str);
 }
 public static void main(String[] args){
 tryit(2020,01,20,"MM/DD/YYYY");
 tryit(2020,01,21,"DD/MM/YYYY");
 tryit(2020,01,22,"YYYY-MM-DD");
 tryit(2020,03,17,"MM/DD/YYYY");
 tryit(2020,03,18,"DD/MM/YYYY");
 tryit(2020,03,19,"YYYY-MM-DD");
 }

輸出結(jié)果

Y=2020 M=01 D=20 formatted with "MM/DD/YYYY" -> 01/20/2020
Y=2020 M=01 D=21 formatted with "DD/MM/YYYY" -> 21/01/2020
Y=2020 M=01 D=22 formatted with "YYYY-MM-DD" -> 2020-01-22
Y=2020 M=03 D=17 formatted with "MM/DD/YYYY" -> 03/77/2020
Y=2020 M=03 D=18 formatted with "DD/MM/YYYY" -> 78/03/2020
Y=2020 M=03 D=19 formatted with "YYYY-MM-DD" -> 2020-03-79

看到?jīng)]有?最后的3個(gè)日期都錯(cuò)誤了。這里的大寫的DD代表的是處于這一年中那一天,不是處于這個(gè)月的那一天,但是dd就沒有問題。

小伙伴們一定要記住了不要犯類似的錯(cuò)誤。 此鍋我們不背。

結(jié)論

YYYY和yyyy不一樣的,DD和dd也是不一樣要切記。

以上所述是小編給大家介紹的Java中日期格式化YYYY-DD的操作bug,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • java中Future使用方法舉例詳細(xì)介紹

    java中Future使用方法舉例詳細(xì)介紹

    Future是java5新加的一個(gè)接口,提供了異步并行計(jì)算的功能,這篇文章主要介紹了java中Future使用方法紹的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • Java版水果管理系統(tǒng)源碼

    Java版水果管理系統(tǒng)源碼

    這篇文章主要為大家詳細(xì)介紹了Java版水果管理系統(tǒng)源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Springboot詳解如何實(shí)現(xiàn)SQL注入過濾器過程

    Springboot詳解如何實(shí)現(xiàn)SQL注入過濾器過程

    這篇文章主要介紹了基于springboot實(shí)現(xiàn)SQL注入過濾器,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2022-06-06
  • Spring如何將bean添加到容器中

    Spring如何將bean添加到容器中

    這篇文章主要介紹了Spring如何將bean添加到容器中,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java文件處理之使用XWPFDocument導(dǎo)出Word文檔

    Java文件處理之使用XWPFDocument導(dǎo)出Word文檔

    最近因項(xiàng)目開發(fā)的需要,整理了一份用JAVA導(dǎo)出WORD文檔,下面這篇文章主要給大家介紹了關(guān)于Java文件處理之使用XWPFDocument導(dǎo)出Word文檔的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • SpringBoot?整合Redis?數(shù)據(jù)庫的方法

    SpringBoot?整合Redis?數(shù)據(jù)庫的方法

    Redis是一個(gè)基于內(nèi)存的日志型可持久化的緩存數(shù)據(jù)庫,保存形式為key-value格式,Redis完全免費(fèi)開源,它使用ANSI?C語言編寫。這篇文章主要介紹了SpringBoot?整合Redis?數(shù)據(jù)庫的方法,需要的朋友可以參考下
    2018-03-03
  • 使用MDC實(shí)現(xiàn)日志鏈路跟蹤

    使用MDC實(shí)現(xiàn)日志鏈路跟蹤

    這篇文章主要介紹了使用MDC實(shí)現(xiàn)日志鏈路跟蹤,在微服務(wù)環(huán)境中,我們經(jīng)常使用Skywalking、CAT等去實(shí)現(xiàn)整體請(qǐng)求鏈路的追蹤,但是這個(gè)整體運(yùn)維成本高,架構(gòu)復(fù)雜,我們來使用MDC通過Log來實(shí)現(xiàn)一個(gè)輕量級(jí)的會(huì)話事務(wù)跟蹤功能,下面就來看看具體的過程吧,需要的朋友可以參考一下
    2022-01-01
  • Java實(shí)現(xiàn)文件批量重命名具體實(shí)例

    Java實(shí)現(xiàn)文件批量重命名具體實(shí)例

    這篇文章主要介紹了Java實(shí)現(xiàn)文件批量重命名具體實(shí)例,需要的朋友可以參考下
    2014-02-02
  • 在idea里如何調(diào)整maven內(nèi)存

    在idea里如何調(diào)整maven內(nèi)存

    這篇文章主要介紹了在idea里如何調(diào)整maven內(nèi)存問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • SpringBoot通過請(qǐng)求對(duì)象獲取輸入流無數(shù)據(jù)

    SpringBoot通過請(qǐng)求對(duì)象獲取輸入流無數(shù)據(jù)

    這篇文章主要介紹了使用SpringBoot通過請(qǐng)求對(duì)象獲取輸入流無數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論

聂荣县| 延寿县| 大庆市| 阳曲县| 安乡县| 景谷| 嘉定区| 滕州市| 焦作市| 大姚县| 达尔| 兴文县| 芒康县| 宁阳县| 天津市| 卢龙县| 赞皇县| 涿州市| 行唐县| 明星| 津南区| 丹棱县| 东莞市| 岳西县| 利辛县| 台山市| 玉林市| 金昌市| 石柱| 鄂尔多斯市| 辽阳县| 平江县| 渑池县| 谷城县| 黑龙江省| 东港市| 石屏县| 资阳市| 聂拉木县| 保德县| 绥宁县|