通过学习Date和Calendar时写的日历

package com.etc.util;

import java.util.Calendar;
import java.util.Scanner;

public class Calendar2 {

	public static void main(String[] args) {
		// 创建扫描器
		Scanner sc = new Scanner(System.in);
		// 输入年份
		System.out.println("请输入指定年份:");
		int year = sc.nextInt();
		// 输入月份
		System.out.println("请输入指定月份:");
		int month = sc.nextInt();
		// 输入天数
		System.out.println("请输入指定天数:");
		int day = sc.nextInt();

		// 在控制台输出周期数
		System.out.println("日	一	二	三	四	五	六");

		// 创建日历Calendar变量对象
		Calendar cal = Calendar.getInstance();
		// 给Calendar对象设置年月日
		cal.set(Calendar.YEAR, year);
		cal.set(Calendar.MONTH, month - 1);
		// cal.set(Calendar.DATE,day);

		// 将天数设置为第一天
		cal.set(Calendar.DATE, 1);

		// 指定月的第一天是星期几
		int i = cal.get(Calendar.DAY_OF_WEEK);

		int weekday = 0;// 指定月的第一天前面有多少个空格
		switch (i) {
		case 1:
			weekday = 0;
			break;
		case 2:
			weekday = 1;
			break;
		case 3:
			weekday = 2;
			break;
		case 4:
			weekday = 3;
			break;
		case 5:
			weekday = 4;
			break;
		case 6:
			weekday = 5;
			break;
		case 7:
			weekday = 6;
			break;
		}

		// 打印输出指定月第一天的前面几个空格
		for (int j = 0; j < weekday; j++) {
			System.out.print("	");
		}

		int days = 1;
		// 从指定月的第一天开始打印输出
		for (int j = 0; j < 7 - weekday; j++) {
			System.out.print(days + "	");
			days++;
		}

		int actualMaximumDate = cal.getActualMaximum(Calendar.DATE);//获取本月的实际最大天数
		cal.set(Calendar.DATE,actualMaximumDate);//设置本月的天数是当前月的实际最大天数    
		int week_month=cal.get(Calendar.WEEK_OF_MONTH);//返回的是当前天数是本月第几周       
		
		for(int j=0;j<week_month;j++){//指定月有多少周,就打印多少行
			System.out.println();//每输出打印7天就换一行
			for(int k=0;k<7;k++){//依次将周日到周六的对应的天数打印出来
				if(days>actualMaximumDate){//若自动增加的天数大于实际天数,循环终止
					return;
				}
				if(days==day){//若指定的天数与当前自动增加的天数一样,标识出来打印
					System.out.print("*"+days+"	");
				}else{//若指定的天数与当前自动增加的天数不一样,正常打印
					System.out.print(days+"	");
				}
				days++;
			}
		}
		
		
	}
}

  

原文地址:https://www.cnblogs.com/1020182600HENG/p/6815154.html