1. 程式人生 > >利用Calendar類列印日曆

利用Calendar類列印日曆

import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Test {

	public static void main(String[] args) {
		
		System.out.println("請輸入日期(如2018-12-07):");
		Scanner sc=new Scanner(System.in);
		String riqi= sc.next();
		//將接收到的字串轉成日期並設定
		Calendar cal=Calendar.getInstance();
		cal.setTime(java.sql.Date.valueOf(riqi));
		//獲取本月第一天是星期幾
		int startDay=cal.get(Calendar.DAY_OF_WEEK);
		/*
		 * 日曆表頭
		 */
		System.out.println("星期天"+"\t星期一"+"\t星期二"+"\t星期三"+"\t星期四"+"\t星期五"+"\t星期六");
		/*
		 * 日曆空格 
		 * 記住:星期天是一天的開始
		 */
		for(int i=1;i<startDay+1;i++) {
			System.out.print("\t");
		}
		
		/*
		 * 日曆日期
		 * cal.getActualMaximum(Calendar.DATE)   獲取本月的最大天數
		 */
		for(int i=0;i<cal.getActualMaximum(Calendar.DATE);i++) {
			System.out.print("  ");
			System.out.print(i+1);
			//如果正好列印到當天對應的日期,則加一個*號
			if((i+1)==cal.get(Calendar.DATE)) 
				System.out.print("*");
			System.out.print("\t");
			//每列印一週換行
			if((startDay+i+1)%7==0) 
				System.out.println();	
		}
		
	}
}

執行效果:

請輸入日期(如2018-12-07):
2018-12-07
星期天	星期一	星期二	星期三	星期四	星期五	星期六
						  1	
  2	  3	  4	  5	  6	  7*	  8	
  9	  10	  11	  12	  13	  14	  15	
  16	  17	  18	  19	  20	  21	  22	
  23	  24	  25	  26	  27	  28	  29	
  30	  31