JAVA學習-Calendar類

Calendar類實個挺神奇的類,具體原因也沒有細究,記一下它的用法。

Calendar類是一個基於Date類的類,它其中用到了Date,並且有相應的方法。而Calendar比Date增加了一些更通用的甚至,比如可以單獨甚至年月日。

新建一個(假)實例

和其他很多函數用法不一樣,Calendar不用new來新建一個實例,而是用Calendar.getInstance(),因爲某些原因所以我叫它(假)實例。

Calendar c = Calendar.getInstance();

這樣我們就擁有了一個時間爲現在時間的Calendar類c了。

設置時間

Calendar有兩種設置方法。

調用set

第一種調用set,用法是set(變量,值)
變量可以是Calendar.HOUR, Calendar.YEAR 等。

Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, 2019);

這樣年份就變成了2019

調用setTime

setTime就是一個和Date有關的方法了,它的傳參是一個Date類,爲什麼要用Date呢,因爲Date的日期計算方式是距離一個年份的毫秒數,個人猜測比較方便。
用法就是setTime(date)

Calendar c = Calendar.getInstance();
Date d = new Date();
c.setTime(d);

複製另一個Calendar時間

Calendar有一個方法是getTime()返回的是一個Date類,和setTime很像,因此我的解決方法如下:

Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(c2.getTime());

Assert的使用

這裏就是爲什麼我認爲我們構建的是一個(假)實例了。
閱讀下述代碼:

Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
assertEquals(c1, c2);

它是不會報錯的,十分神奇。。

再看另一端代碼:

Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.set(Calendar.YEAR, 1999);
assertEquals(c1, c2);

當我們修改了年份以後,它是會報錯的。

因此,我們得出的結論對於Calendar的assert,它只是對比了日期是否相同,並不對比指針是否一致

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章