一個由「 YYYY-MM-dd 」引起的慘案

前言

在元旦假期到來之際,我恰好準備出去飄幾天,然而在使用一些 App 的時候,居然被我發現了一個應該是因爲前端粗心而致使的 bug,在 2019.12.30 出發,結果 App 上顯示的是 2020.12.30(嚇得我覺得個人訂單下錯了,此處是否是該把程序員拉去祭天了)。php

鑑於可能會有程序員所以而被拉去祭天,而我之前學 Java 的時候就有留意過這個問題,因此我仍是把這個問題拿出來講一下,但願能儘可能避免這方面的粗枝大葉(畢竟這種問題也很難測出來)。前端

正文

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));
	}
}
複製代碼

咱們來看下運行結果:程序員

2019-08-31 to yyyy-MM-dd: 2019-08-31
2019-08-31 to YYYY/MM/dd: 2019-08-31
複製代碼

若是咱們日期改爲 12.31:面試

2019-12-31 to yyyy-MM-dd: 2019-12-31
2019-12-31 to YYYY-MM-dd: 2020-12-31
複製代碼

問題就出現了是吧,雖然是一個小小的細節,可是用戶看了也會一臉懵,可是咱們做爲開發者,不能懵啊,趕忙文檔查起來: bash

在這裏插入圖片描述
y:year-of-era;正正經經的年,即元旦事後; Y:week-based-year;只要本週跨年,那麼這周就算入下一年; 就好比說今年(2019-2020) 12.31 這一週是跨年的一週,而 12.31 是週二,那使用 YYYY 的話會顯示 2020,使用 yyyy 則會從 1.1 纔開始算是 2020。

這雖然是個很小的知識點,可是也有不少人栽到坑裏,各位學完能夠記錄一下咯,以爲好的還能夠點個贊關注一下。我在這裏祝願各位碼代碼時若有神助,永遠沒有 bug~架構

By the way

有問題?能夠給我留言或私聊 有收穫?那就順手點個讚唄~學習

固然,也能夠到個人公衆號下「6曦軒」, 回覆「學習」,便可領取一份 【Java工程師進階架構師的視頻教程】~ 回覆「面試」,能夠得到: 【本人嘔心瀝血整理的 Java 面試題】 spa

在這裏插入圖片描述
因爲我咧,科班出身的程序員,php,Android以及硬件方面都作過,不過最後仍是選擇專一於作 Java,因此有啥問題能夠到公衆號提問討論(技術情感傾訴均可以哈哈哈),看到的話會盡快回復,但願能夠跟你們共同窗習進步,關於服務端架構,Java 核心知識解析,職業生涯,面試總結等文章會不按期堅持推送輸出,歡迎你們關注~~~
相關文章
相關標籤/搜索