java中Calendar抽象類的詳細使用

轉載地址: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);
	}

}


        


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