轉載地址:http://www.open-open.com/lib/view/open1414743866872.html
寫的非常詳細,包括:
1.如何設置值;
2.如何獲取值,最大值,最小值(一個月中的最後一天是多少號);
3.Calendar的各個範圍介紹,比如DAY_OF_MONTH,DAY_OF_YEAR,DAY_OF_WEEK等等;
4.使用Calendar的roll函數和add函數計算;
說明:Calendar的roll函數和add函數的區別?
比如當前日期是2016-08-18,獲取Calendar cal = Calendar.getInstance();實例
1.cal.add(Calendar.MONTH,5); //運算結果爲2017-01-18
2.cal.roll(Calendar.MONTH,5); //運算結果爲2016-01-18
兩者的區別在於:roll方法只在指定的Calendar範圍(例子中指定的是月份)裏面循環滾動,不會進位。而add方法會不斷相加,產生進位。正如本例中,當前月份爲8月份,再過5個月,那麼年份加1,而roll函數不影響其他的範圍,只在月份範圍變化。
詳細代碼,如下所示:
package SecondInterview;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class UseCalendar {
public static void main(String[] args) {
//詳細使用Calendar抽象類
Calendar cal = Calendar.getInstance();
//Part1:通過Calendar常量(field)獲取值
int xingqi = cal.get(Calendar.DAY_OF_WEEK);//星期幾:從星期天(返回1)開始計算,如果今天星期二,那麼返回3
System.out.println("星期幾:"+xingqi);
int day_of_year = cal.get(Calendar.DAY_OF_YEAR);//一年中第幾天
System.out.println("一年中的第幾天:"+ day_of_year);
int week_of_month = cal.get(Calendar.WEEK_OF_MONTH);//一個月的第幾周
System.out.println("一個月的第幾周:"+week_of_month);
int week_of_year = cal.get(Calendar.WEEK_OF_YEAR);//一年中的第幾周
System.out.println("一年中的第幾周:"+week_of_year);
int year = cal.get(Calendar.YEAR);//年
System.out.println("年:"+year);
int month = cal.get(Calendar.MONTH);//月,說明月份獲取需要 +1,那麼,賦值時需要 -1
System.out.println("月:"+(month+1));
int day_of_month = cal.get(Calendar.DATE);//一個月中的第幾天 0-31
int day_of_month1 = cal.get(Calendar.DAY_OF_MONTH);//一個月中的第幾天 0-31
System.out.println("日:"+day_of_month);
int hour = cal.get(Calendar.HOUR);//時,12小時制
System.out.println("時(12小時制):"+hour);
int hour1 = cal.get(Calendar.HOUR_OF_DAY);//時,24小時制,一般使用這個屬性賦值
System.out.println("時(24小時制):"+hour1);
int minute = cal.get(Calendar.MINUTE);//分
System.out.println("分:"+minute);
int second = cal.get(Calendar.SECOND);//秒
System.out.println("秒:"+second);
int milliSecond = cal.get(Calendar.MILLISECOND);//取得精確的毫秒數
System.out.println("毫秒:"+milliSecond);
//Part1 end
//Part2:使用Calendar的roll和add函數計算
SimpleDateFormat simpleFormate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//當前時間再過2個小時後的時刻
cal.add(Calendar.HOUR_OF_DAY, 2);
System.out.println("當前時間再過2個小時後的時刻:"+ simpleFormate.format(cal.getTime()) );
//當前時間再過5天后的時刻
cal.add(Calendar.DAY_OF_MONTH, 5);
System.out.println("當前時間再過5天后的時刻:"+ simpleFormate.format(cal.getTime()) );
//*使用roll函數,求當前時間再過31天后的時刻
//說明:一般不使用,原因是該方法只在一個月裏面循環計算,其大小不會超過該月最值。roll滾動,在一個月份裏滾動,不超過最值。
cal.roll(Calendar.DAY_OF_MONTH, 32);
System.out.println("使用roll函數,當前時間再過32天后的時刻:"+ simpleFormate.format(cal.getTime()) );
//當前時間再過6個月後的時刻
cal.add(Calendar.MONTH, 6);
System.out.println("當前時間再過6個月後的時刻:"+ simpleFormate.format(cal.getTime()) );
//使用roll函數
cal.roll(Calendar.MONTH, 12);
System.out.println("使用roll,當前時間再過12個月後的時刻:"+ simpleFormate.format(cal.getTime()) );
//使用roll函數
cal.roll(Calendar.MONTH, true);
System.out.println("使用roll,當前時間再過1個月後的時刻:"+ simpleFormate.format(cal.getTime()) );
//當前時間再過3年後的時刻
cal.add(Calendar.YEAR, 3);
System.out.println("當前時間再過3年後的時刻:"+ simpleFormate.format(cal.getTime()) );
//Part2 end
//Part3 使用Calendar獲取值
//1.獲取當天的起止時間
//2.獲取當週的起止時間
//3.獲取當月的起止時間 1,2,3顯示格式均爲"yyyy-MM-dd HH:mm:ss"
//一天中的開始時刻
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
String start1 = simpleFormate.format(cal.getTime());
//一天中的結束時刻
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
String end1 = simpleFormate.format(cal.getTime());
System.out.println("當天的起止時間:" + start1 + "~" + end1);
//一週中的開始時間
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
String start2 = simpleFormate.format(cal.getTime());
//一週中的結束時間
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
String end2 = simpleFormate.format(cal.getTime());
System.out.println("當週的起止時間:" + start2 + "~" + end2);
//一月中的開始時間
cal.set(Calendar.DAY_OF_MONTH, 1);//從1號開始
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
String start3 = simpleFormate.format(cal.getTime());
//一月中的結束時間
int maxMonthDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, maxMonthDay);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
String end3 = simpleFormate.format(cal.getTime());
System.out.println("當月的起止時間:" + start3 + "~" + end3);
}
}