输入一个任意时间(如:2018年9月5日),打印出当月的日期详情(如图)(阴影使用*号代替,如5*)
代码
Scanner sc = new Scanner(System.in);
//日期的格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月d日");
String date;
//提示并输入
System.out.print("请输入日期(如:2018年9月5日):");
date = sc.nextLine();
//把输入的日期转为日期类型的数据
Date date1 = sdf.parse(date);
//创建一个日期类
Calendar c1 = Calendar.getInstance();
//设置这个日期类为您输入的日期
c1.setTime(date1);
//得到输入的日期的月分的第一天
Calendar firstDay = Calendar.getInstance();
firstDay.setTime(date1);
firstDay.set(Calendar.DATE, 1);
//得到下个月的第一天
Calendar lastDay = Calendar.getInstance();
lastDay.setTime(date1);
lastDay.add(Calendar.MONTH, 1);
lastDay.set(Calendar.DATE, 1);
System.out.println("日\t一\t二\t三\t四\t五\t六");
while(!firstDay.equals(lastDay)) {
//通过判断第一天是星期几,加空格。
if(firstDay.get(Calendar.DATE)==1) {
for (int i = 1; i < firstDay.get(Calendar.DAY_OF_WEEK); i++) {
System.out.print(" \t");
}
}
//打印这个月的日期 ,在输入的那个日期上加\*号
if(c1.get(Calendar.DATE)==firstDay.get(Calendar.DATE)) {
System.out.print(firstDay.get(Calendar.DATE)+"*\t");
}else {
System.out.print(firstDay.get(Calendar.DATE)+"\t");
}
//换行
if(firstDay.get(Calendar.DAY_OF_WEEK) == 7) {
System.out.println();
}
firstDay.add(Calendar.DATE, 1);
}
实现效果