聽說用了YYYY-MM-dd的程序員,前些天都在加班改Bug
大叔我北漂十多年,一直沒有搖到北京的車牌,每周都需要通過一個 APP 辦理“進京證”,當我辦理 19 年最后一次進京證的時候,APP 給出了這樣的提示:
日期顯示:“2020-12-31”!
車友群里面立馬有人不淡定了,雖然大家都猜出來,這應該是 APP 的 Bug,但還是難免要吐槽一下。
那么產(chǎn)生這個 Bug 的原因是什么呢?其實很簡單,就是 把 yyyy-MM-dd 寫成了 YYYY-MM-dd 。
如果對時間處理不那么熟悉的程序員看到這里,會認為 yyyy 和 YYYY 有什么區(qū)別么?在代碼里面敲一下,他們的結(jié)果也都是相同的??!
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)); } }
運行結(jié)果為:
2019-08-31 to yyyy-MM-dd: 2019-08-31
2019-08-31 to YYYY-MM-dd: 2019-08-31
但是如果我們把日期改成 2019-12-31 再試試呢?結(jié)果產(chǎn)生了差異:
2019-12-31 to yyyy-MM-dd: 2019-12-31
2019-12-31 to YYYY-MM-dd: 2020-12-31
那么產(chǎn)生這個問題的原因是什么呢?其實很簡單:Y 和 y 實際上代表了不同的含義
。
- y:year-of-era;正正經(jīng)經(jīng)的年;
- Y:week-based-year;只要本周跨年,那么這周就算入下一年;
這是開發(fā)過程中的一個小細節(jié),一不小心就掉到坑里了。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java里得到00:00:00格式的時分秒的Timestamp
Java里如何得到00:00:00格式的時分秒的Timestamp ,下面是具體的實現(xiàn)代碼,需要的朋友可以參考下。2009-09-09Spring Boot如何移除內(nèi)嵌Tomcat,使用非web方式啟動
這篇文章主要介紹了Spring Boot如何移除內(nèi)嵌Tomcat,使用非web方式啟動,幫助大家更好的理解和學習使用spring boot框架,感興趣的朋友可以了解下2021-02-02Java獲取兩個集合List的交集、補集、并集(相加)和差集(相減)的不同方式
這篇文章主要給大家介紹了關(guān)于Java獲取兩個集合List的交集、補集、并集(相加)和差集(相減)的不同方式,在一般操作中對于list集合取交集、差集、并集,比較簡單,需要的朋友可以參考下2023-08-08用StopWatch優(yōu)雅替代currentTimeMillis計算程序執(zhí)行耗時
別再用System.currentTimeMillis()計算程序執(zhí)行耗時了,擁抱StopWatch優(yōu)雅來優(yōu)雅的計算,代碼更簡潔效率更高,本文帶你了解StopWatch的使用2021-09-09SpringBoot整合Swagger和Actuator的使用教程詳解
Swagger 是一套基于 OpenAPI 規(guī)范構(gòu)建的開源工具,可以幫助我們設計、構(gòu)建、記錄以及使用 Rest API。本篇文章主要介紹的是SpringBoot整合Swagger(API文檔生成框架)和SpringBoot整合Actuator(項目監(jiān)控)使用教程。感興趣的朋友一起看看吧2019-06-06