Java Calendar實現控制檯日曆

	public static void main(String[] args) throws IOException {
		//初始化日曆對象
		Calendar calendar = Calendar.getInstance();
		//當前日期
		int today = calendar.get(Calendar.DAY_OF_MONTH);
		//當前月份
		int month = calendar.get(Calendar.MONTH);
		//設置日曆爲當前月第一天
		calendar.set(Calendar.DAY_OF_MONTH, 1);
		//獲取當前月第一天在當前周的位置
		int weekDay = calendar.get(Calendar.DAY_OF_WEEK);
		//獲取當前月第一天所在周的第一天
		int firstDayOfWeek = calendar.getFirstDayOfWeek();
		
		//首行縮進天數
		int day = 0;
		//若是日曆當前日期不是所在周的第一天,則循環查找
		while(weekDay != firstDayOfWeek){
			//縮進天數自加
			day++;
			//日曆當前天數向前減一,例如7月1日,執行以後爲6月30日
			calendar.add(Calendar.DAY_OF_MONTH, -1);
			//獲取日曆當前日期在一週中的第幾天
			weekDay = calendar.get(Calendar.DAY_OF_WEEK);
		}
		
		//獲取周天數簡稱,如星期一,mon等
		//根據地區不一樣顯示不一樣,能夠經過Locale.setDefault(Locale.CANADA);設置
		String[] arys = new DateFormatSymbols().getShortWeekdays();
		//循環打印周天數簡稱
		do{
			System.out.print("\t"+arys[weekDay]);
			calendar.add(Calendar.DAY_OF_MONTH, 1);
			weekDay = calendar.get(Calendar.DAY_OF_WEEK);
		}while(weekDay != firstDayOfWeek);
		System.out.println();
		
		//根據當前月第一天在週中的天數設置首行縮進
		for(int i = 1; i <= day; i++){
			System.out.print("\t");
		}
		
		//設置日曆對象時間爲當前月第一天,準備打印日曆
		calendar.set(Calendar.DAY_OF_MONTH, 1);
		
		//循環打印日期
		do{
			int now = calendar.get(Calendar.DAY_OF_MONTH);
			System.out.print("\t"+now);
			
			//標記出當前日期
			if(today == now){
				System.out.print("*");
			}
			
			calendar.add(Calendar.DAY_OF_MONTH, 1);
			weekDay = calendar.get(Calendar.DAY_OF_WEEK);
			
			//若是處理後的日期是所在周的第一天,則換行
			if(weekDay == firstDayOfWeek){
				System.out.println();
			}
		}while(calendar.get(Calendar.MONTH) == month);
	}

相關文章
相關標籤/搜索