今天我們來深入探討一下Java中的Calendar的工具類摆马,總共會(huì)分成兩部分由深到淺講解谴供。這篇就講解Calendar的基礎(chǔ)用法,看它到底能做到什么事情锨并,下一篇我們將擴(kuò)展的講解我們平時(shí)開發(fā)遇到的問題和一些通過Calendar來計(jì)算的方法。比如比較兩個(gè)日期是否再同一年等問題五垮。
首先
我們要知道程序中存儲(chǔ)時(shí)間的值乍惊。在生活中我們表達(dá)時(shí)間是幾年幾月幾號(hào)幾時(shí)幾分等,可以說表達(dá)方式有很多放仗。代碼中保存日期的確只有一種润绎,就是我們平時(shí)說的毫秒數(shù)。從1970年1月1號(hào)0時(shí)0分0秒最為計(jì)算開始诞挨。毫秒數(shù)為0莉撇,就是這個(gè)1970年1月1號(hào)0時(shí)0分0秒這個(gè)時(shí)間。實(shí)際開發(fā)中還會(huì)遇到這個(gè)問題惶傻,我如果時(shí)區(qū)棍郎,地區(qū)更換了,那同一個(gè)Calendar返回毫秒數(shù)還是一樣嗎银室?答案是一樣的涂佃,但是Calendar的get方法就不一樣了。
開始
Java中蜈敢,Calendar是一個(gè)抽象類辜荠。沒有具體實(shí)現(xiàn)。都由他子類實(shí)現(xiàn)的抓狭,Calendar.getInstance()方法會(huì)自己去判斷然后去創(chuàng)建相應(yīng)的Calendar子類伯病。用的最多的還是GregorianCalendar公歷這個(gè)類。
Calendar常用方法及常量說明:
1.getInstance() 獲取Calendar子類的實(shí)例否过。其子類可以直接使用new午笛,例如new GregorianCalendar。
2. setTimeInMillis(),setTime() ?都是給Calendar對(duì)象們?cè)O(shè)置時(shí)間苗桂。一般通過Calendar.getInstance()方法獲得的Calendar對(duì)象都已經(jīng)默認(rèn)賦值為了系統(tǒng)當(dāng)前的毫秒數(shù)季研。
3.setTimeZone()? 設(shè)置時(shí)區(qū),格式如北京時(shí)間"GMT +8:00".
4.set(int field, int value) 可以單獨(dú)設(shè)置日期的某個(gè)值誉察,如設(shè)置年,設(shè)置月等惹谐。
calendar.set(Calendar.YEAR,2020);
calendar.set(Calendar.HOUR_OF_DAY,23);
5.add(int field, int value) 日期的加減計(jì)算持偏。可以加減年氨肌,加減月
calendar.add(Calendar.YEAR,2020);
calendar.add(Calendar.HOUR_OF_DAY,23);
6.get(int field, int value) 獲得日期對(duì)應(yīng)的值鸿秆,比如得到年,得到月的值怎囚。這里注意一下卿叽。GregorianCalendar類返回的月的值是0-11的桥胞,返回的星期幾是1表示星期天。7表示星期六考婴。
7.常用常量
ERA(0) :網(wǎng)上資料翻譯(紀(jì)元/世紀(jì)),不是很清楚啥意思贩虾,有知道的可以告知。
YEAR(1) : 表示年
MONTH(2): 表示月
WEEK_OF_YEAR(3):表示一年中的第幾周沥阱,一年一共有52周
WEEK_OF_MONTH(4):表示這個(gè)月的第幾個(gè)星期
DATE:表示日
DAY_OF_MONTH:表示日
DAY_OF_YEAR:表示當(dāng)天在這一年里是第幾天?
DAY_OF_WEEK:表示星期幾
DAY_OF_WEEK_IN_MONTH:表示當(dāng)天在該月的第幾個(gè)星期
AM_PM:表示上午還是下午
HOUR:表示小時(shí)缎罢,12小時(shí)制,
HOUR_OF_DAY:表示小時(shí)考杉,24小時(shí)制
MINUTE:表示分鐘
SECOND:表示秒
MILLISECOND:表示微秒
以上就是Calendar的常用方法策精。還有些不怎么常用的方法,以后在說崇棠。
雖然Calendar已經(jīng)很方便了咽袜,但是平時(shí)開發(fā)中還是有些不方便。比如快速轉(zhuǎn)換指定時(shí)間到指定格式枕稀,比如我要顯示xxxx年xx月這樣的格式询刹,自己做的話只能Calendar.get()方法去一個(gè)個(gè)取,好啦抽莱,說了這莫多范抓,接下來就簡(jiǎn)單介紹一下SimpleDateFormat類。
SimpleDateFormat 常用方法:
format() : 將指定的日期轉(zhuǎn)換成對(duì)應(yīng)的格式食铐。得到一個(gè)轉(zhuǎn)換之后字符串匕垫。
parse() : 傳入一個(gè)字符串寫好的日期(如2017年03月01),就會(huì)得到一個(gè)日期對(duì)象Date虐呻。
SimpleDateFormat 常用關(guān)鍵字:
G : 表示年代
y/Y : 表示年
M : 表示月
d : 表示日
D : 表示一年的第幾天
E : 表示星期幾
w : 表示一年的第幾個(gè)星期
W : 一月中第幾個(gè)星期
F : ?一月中第幾個(gè)星期幾
h : 表示小時(shí)象泵,一天中(12小時(shí)制 1-12)
H : 表示小時(shí),一天中(24小時(shí)制 0-23)
k : 表示小時(shí)斟叼,一天中(12小時(shí)制 0-23)
K : 表示小時(shí)偶惠,一天中(12小時(shí)制 0-11)
m : 表示分鐘
s : 表示秒
S : 表示毫秒
a : 表示上午,下午
z : 時(shí)區(qū)
好了今天就介紹到這里朗涩,這篇是我第一在簡(jiǎn)書上寫寫文章忽孽,個(gè)人感覺,寫代碼谢床,技術(shù)的文章還是有點(diǎn)不習(xí)慣兄一,寫的不對(duì)的地方還請(qǐng)大家指點(diǎn)指點(diǎn)。