學習日期函數前要先引入兩個包
java.util.Date
java.text.SimpleDateFormat
一、 Calendar和Date的轉化
(1)Calendar轉Date
Calendar cal=Calendar.getInstance(); //創建Cal
Date date=cal.getTime(); //系統時間賦值爲從Cal獲取的值
(2)Date轉Calendar
Date date=new Date();
//date就是當前系統時間
Calendar cal=Calendar.getInstance(); //創建Cal
cal.setTime(date); //Cal寫入當前系統時間
二、 設置輸出日期時間的格式
Date date=newDate(); //date就是當前系統時間
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//創建一個新日期格式df
System.out.println(df.format(date));//以新的日期格式輸出當前時間
三、 add()方法 與 roll()方法
(1)add()方法
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); //設置格式df
Calendarcal=Calendar.getInstance();
//創建cal
cal.set(Calendar.YEAR, 2017); //設置爲2006年
cal.set(Calendar.MONTH, 0);
//設置爲1月(下標0)
cal.set(Calendar.DAY_OF_MONTH, 20);
//設爲20日
cal.add(Calendar.DATE, 12);
//add()[原日期上更改]
Date date=cal.getTime();
//cal時間賦值到date
System.out.println(df.format(date));
//df格式輸出date
cal.add(Calendar.DATE, -12);
//add()[原日期上更改]
date=cal.getTime();
// cal的新時間賦值到date
System.out.println(df.format(date));
//df格式輸出date
結果輸出:
2017-02-01
2017-01-20
add()方法在日曆內循環,可以跨月份移時間 (常用)
(2)roll方法
SimpleDateFormatdf=new SimpleDateFormat("yyyy-MM-dd"); //嘗試着自己理解並註釋吧
Calendarcal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2017);
cal.set(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 20);
cal.roll(Calendar.DATE, 12);
date=cal.getTime();
System.out.println(df.format(date));
cal.roll(Calendar.DATE, -12);
date=cal.getTime();
System.out.println(df.format(date));
輸出:
2017-01-01
2017-01-20
roll()方法在月份內循環,不能跨月份移時間(不常用)
四、 常用函數
獲取系統當前時間:
public static String getSystemTime(){
Date date=new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-ddHH:mm:ss");
//SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss G E D F w W a EF");
//(這種在格式後面加定義了星期等)
return df.format(date);
}
//當前時間 (calendar)
Calendar cal = Calendar.getInstance();
SimpleDateFormat nowtime = new SimpleDateFormat("yyyy-MM-ddHH:mm:ss") ;
String myDateTime = nowtime.format(cal.getTime());
//1年前日期 (減號爲前,加號爲後)
Date
myDate=new Date();
long oneyearago = (myDate.getTime()/1000)- 60*60*24*365; //秒*分*時*天
myDate.setTime(oneyearago *1000);
String oneyearagoDate =
nowtime.format(myDate);
//1個月前日期
Date myDate=new Date();
long onemonthago = (myDate.getTime()/1000)-60*60*24*30(/31);
//秒*分*時*天
myDate.setTime(onemonthago *1000);
String onemonthagoDate =nowtime.format(myDate);
//1天前日期
Date myDate=new Date();
long onedayago = (myDate.getTime()/1000)-
60*60*24; //秒*分*時
myDate.setTime(onedayago *1000);
String oneweekagoDate=nowtime.format(myDate);