<small>
日期的簡(jiǎn)單操作:獲得日期古程、日期設(shè)置、日期計(jì)算
Java 中沒有一個(gè)類筷屡,可以直接完成日期操作
要想實(shí)現(xiàn) Java 中的日期操作芜辕,必須有以下三個(gè)類共同搭配使用擅耽,才能實(shí)現(xiàn)
java.util.Date 日期類:獲得當(dāng)前系統(tǒng)時(shí)間
java.text.simpleDateFormat日期格式轉(zhuǎn)換類,可以實(shí)現(xiàn)日期格式的想換轉(zhuǎn)換
java.util.Calendar 日歷類物遇,格里高利歷實(shí)現(xiàn)日期設(shè)置
java.util.Date
1乖仇、通過構(gòu)造獲得當(dāng)前系統(tǒng)時(shí)間
此時(shí)間表現(xiàn)方式為西方時(shí)間格式
Date nowDate=new Date();
System.out.println(nowDate);//當(dāng)前時(shí)間
long getTime()
返回從1970年元月1日零時(shí)零分零秒至今的毫秒值
與 System,currentTimeMillis();相同
void setTime(long times)
返回給定毫秒值對(duì)應(yīng)的日期時(shí)間
用于設(shè)置給定毫秒值對(duì)應(yīng)的時(shí)期時(shí)間询兴;
long times2=100000000000000000L;
nowDate.setTime(times); 返回給 nowDate
此方法不好乃沙,可以用有參構(gòu)造
Date futureDate=new Date(times2)
java.text.simpleDateFormat
由于new Date()獲得當(dāng)前系統(tǒng)時(shí)間,為西方表示方式诗舰,對(duì)于中國人來說警儒,不死十分友好,素有我們需要將西方表示方式轉(zhuǎn)換成中國人比較習(xí)慣的表現(xiàn)方式
中國人習(xí)慣的方式:
2016年10月13日 15時(shí)07分38秒
2016-10-13 15:07:38
y: 年
M: 月
d :月份中的天數(shù)
H: 24小時(shí)制
h :12小時(shí)制
m:分
s: 秒
2016年10月13日 15時(shí)07分38秒
yyyy 年 MM 月 dd 日 HH 時(shí)mm 分 ss 秒
SimpleDateFormat sdf=new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 時(shí)mm 分 ss 秒")
通過制定日期格式轉(zhuǎn)換對(duì)象將 new Date()系統(tǒng)時(shí)間轉(zhuǎn)換為指定日期格式的表現(xiàn)形式
Date date=new Date()眶根;
Date→String
String nowDate=sdf.format(date);
parse
將中方的時(shí)間轉(zhuǎn)換為西方的時(shí)間
String→Date 將字符串時(shí)間轉(zhuǎn)為 Date
此方法可能拋出異常
情形1:如果格式?jīng)]有問題蜀铲,字符串時(shí)間輸入沒有問題,則不會(huì)拋出異常
情形2:如果格式有問題属百,或者字符串時(shí)間輸入對(duì)不上號(hào)則會(huì)拋出異常
String dateStr="2008年08月08日 20時(shí)08分08秒"
SimpleDateFormat sdf=new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 時(shí)mm 分 ss 秒")
Date parse(String dateStr)记劝;//中方字符串時(shí)間格式化,將字符串時(shí)間通過指定格式轉(zhuǎn)換為 date 類型時(shí)間
Date date=sdf2.parase(dateStr)
java.util.Calendar
創(chuàng)建對(duì)象族扰,由于 Calendar 是一個(gè)抽象類厌丑,可以通過父類引用指向子類 GregorianCalendar對(duì)象方式實(shí)現(xiàn)實(shí)例化//不常用
Calendar cal=new GregorianCalendar()//不常用
可以通過工廠方法模式
Calendar cal2=Calendar.getInstance();
Date getTime()
從日歷中獲得當(dāng)前系統(tǒng)時(shí)間定欧,與 new Date()直接獲得當(dāng)前系統(tǒng)時(shí)間等效
void setTime()
給日歷指定的日期時(shí)間
Date date2=new new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 時(shí)mm 分 ss 秒").parse("2008年08月08日20時(shí)08分08秒")
①、Date getTime()
* Calendar → Date
* 從日歷中獲得當(dāng)前系統(tǒng)時(shí)間怒竿。
* 與new Date()直接獲得當(dāng)前系統(tǒng)時(shí)間等效砍鸠。
*/
Date date = new Date();
System.out.println("new Date:"+date);
Date dateFromCal = cal.getTime();
System.out.println("dateFromCal:"+dateFromCal);
/*
* ②、void setTime()
* Date → Calendar
* 給日歷設(shè)置指定的日期時(shí)間耕驰。
*/
Date date2 =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.parse("2008-08-08 20:08:08");
//將日歷設(shè)置時(shí)間為date2
cal.setTime(date2);
System.out.println("setTime之后的日歷時(shí)間:"+cal.getTime());
/*
long getTimeInMillis()
long times=cal.getTimeInMillis()
####### setTimeInMillis

####### 時(shí)間分量函數(shù)
時(shí)間分量:
YEAR 年
MONTH 月
DATE 日
DAY_OF_MONTH
HOUR 時(shí)(12小時(shí)制)
HOUR_OF_DAY 時(shí)(24小時(shí))
MINUTE 分
SECOND 秒
DAY_OF_WEEK(周日為一周的開始)
calendar cal=Calendar.getInstance();
System.out.println(年:cal.get(calendar.YEAR));//2016
System.out.println(年:cal.get(calendar.MONTH));//9表示10月爷辱,0 表示1
######cal.set(Calendar.YEAR,2017)
其他設(shè)置類似
設(shè)置日歷為日歷時(shí)間所在周的周幾
-
void add(時(shí)間分量,值)
*/
cal.add(Calendar.DATE, -3);//三天前
System.out.println("三天前的時(shí)間:"+cal.getTime());cal.add(Calendar.MINUTE, 10);//10分鐘后 System.out.println("10分鐘的時(shí)間:"+cal.getTime()); cal.add(Calendar.MONTH, 4);//4個(gè)月后 System.out.println("4個(gè)月后的時(shí)間:"+cal.getTime());
######時(shí)間分量的運(yùn)算
時(shí)間計(jì)算:如明天此時(shí)10分鐘后等我,四個(gè)月后結(jié)束
###### void add(時(shí)間分量朦肘,值)
cal.add(Calendar.DATE,-3)