import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class TestCalendar {
/**
* 用户随便输入一个日期(yyyy-MM-dd), 打印出这个日期所在月的每一天, 格式如下:
* 日 一 二 三 四 五 六
* 1 2 3 4 5 6
* 技能点:
* 1. 字符串 --> util.Date
* 2. Date --> Calendar
* 3. 修改日期 --> set
* 4. 记录用户输入的是哪一天 --> get
* 5. 判断星期几 --> get
* 6. 获取该月份的最大天数 --> getActuralMa...
* 7. 日期自增 --> add
*/
public static void main(String[] args) {
//创建扫描器
Scanner sc = new Scanner(System.in);
while (true){
//提示用户输入
System.out.println("请输入一个日期,格式为:2018-12-05,输入exit退出");
//接受用户输入
String temp = sc.nextLine();
if(temp.equalsIgnoreCase("exit")){//判断两个字符串是否相等忽略大小写
System.out.println("ByeBye");
break;
}
//创建日期格式化对象
//DateFormat日期格式化类
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
//string --> date
Date date = format.parse(temp);//此处需添加异常
//date --> Calendar
//创建日历对象
Calendar calendar = new GregorianCalendar();
//设置日期为用户输入日期
calendar.setTime(date);
//打印日历抬头
System.out.println("日\t一\t二\t三\t四\t五\t六");
//记录用户输入的日
int currentDate = calendar.get(Calendar.DATE);
//修改日期为此月的第一天
calendar.set(Calendar.DAY_OF_MONTH,1);
//获取第一天是星期几
int week = calendar.get(Calendar.DAY_OF_WEEK);//1-7
//打印缩进
for (int i = 1; i < week; i++) {
System.out.print("\t");
}
//获取当月的最大天数
int maxDate = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
//循环打印天数
for (int i = 1; i <= maxDate; i++) {
//如果是当天,打印一个*
if(calendar.get(Calendar.DATE) == currentDate){
System.out.print("*");
}
//打印该天
System.out.print(i+"\t");
//如果是周六,打印换行
if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){
System.out.println();
}
//天数加一
calendar.add(Calendar.DATE,1);
}
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println();
System.out.println("-------------------------------------------------------------------------------");
}
}
}