/*可视化日历程序*/
public class TestCalendar2 {
public static void main(String[] args) throws ParseException {
System.out.println("请输入格式为yyyy-MM-dd的日期字符串");
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");//DateFormat类设定字符串格式
Date date = df.parse(str);//.parse函数将字符串转换为Date类型
// System.out.println(date);
Calendar c = new GregorianCalendar();//声明日历类(用子类方法)
c.setTime(date);//将字符串转换Date类为日期类
c.set(Calendar.DAY_OF_MONTH, 1);//将日历类c的天数设置为这个月的第一天
int flag = c.get(Calendar.DAY_OF_MONTH);//得到输入的日期的天
System.out.println("日\t一\t二\t三\t四\t五\t六");//先输出第一行
for (int i = 0; i < c.get(Calendar.DAY_OF_WEEK) - 1; i++) {
System.out.print("\t");
}//得到c类这个月一号是星期几
//打印前面的空格,当这个月1号是星期六的时候,打印6个空行,星期六默认值是7
int maxday = c.getActualMaximum(Calendar.DATE);//设定循环次数为输入月的总天数
for (int i = 1; i < maxday; i++) {
if (c.get(Calendar.DAY_OF_MONTH) == flag) {
System.out.print(c.get(Calendar.DAY_OF_MONTH) + "*\t");
}//如果和输入日期相等,则标记*号
else {
System.out.print(c.get(Calendar.DAY_OF_MONTH) + "\t");
}//否则普通输出day
if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
System.out.println();
}//当日期是星期六的时候换行
c.add(Calendar.DAY_OF_MONTH, 1);
}//把日期增加一天
}
测试: