import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
import com.yunsi.day15.dateuse8.DateUtil;
/**
* 可视化日历,打印当前月
* @author Administrator
*
*/
public class Test05 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入日期:(yyyy-MM-dd)");
String s = input.next();
// String s="2019-10-28";
//String--->Date
使用自己编写的工具类将输入的String类转化为Date对象
Date date = DateUtil.getDateFromStr(s, "yyyy-MM-dd");
//Date--->Calendar
Calendar cal = new GregorianCalendar();
cal.setTime(date);
//获取当前月的最大天数 ,确定循环的终止条件
int maxDays = cal.getActualMaximum(Calendar.DATE);
System.out.println("当前月的最大天数:"+maxDays);
//获取当前天
int today = cal.get(Calendar.DATE);
System.out.println("今天:"+today);
//将日期设置成1号,然后获取周索引 1号前面 的个数= 1号的周索引-1
cal.set(Calendar.DATE, 1);
int weekIndex = cal.get(Calendar.DAY_OF_WEEK);
System.out.println("1号对应的周索引:"+weekIndex);
System.out.println("日 一 二 三 四 五 六");
//先打印1号前面的
for(int i=1;i<weekIndex;i++){
System.out.print(" ");
}
for(int i=1;i<=maxDays;i++){
//如果当前周索引==周六,打印
换行
if(i==today){
System.out.print("*");
}
System.out.print(i+" ");
if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){
System.out.print("
");
}
//每打印1天,日期加1
// System.out.println("当前的日期:"+cal.get(Calendar.DATE));
cal.add(Calendar.DATE, 1);
}
}
}
结果