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); }