public static void main(String[] args) {
// Calendar 是一个抽象类,不可以直接创建对象
// GregorianCalendar(子类) extends Calendar(父类)
Calendar cal = new GregorianCalendar();
//创建方式2:
Calendar cal2 = Calendar.getInstance();
//System.out.println(cal);
// 常用的方法:
// get 方法,传入参数:Calendar中定义的常量
System.out.println(cal.get(Calendar.YEAR));
System.out.println(cal.get(Calendar.MONTH)+1);// 月份要+1
System.out.println(cal.get(Calendar.DATE));
System.out.println(cal.get(Calendar.DAY_OF_WEEK));// 星期要减1
System.out.println(cal.getActualMaximum(Calendar.DATE));// 获取当月日期的最大天数
System.out.println(cal.getActualMinimum(Calendar.DATE)); // 获取当月日期的最小天数
// set方法:
cal.set(Calendar.YEAR,2015);
cal.set(Calendar.MONTH,3);
cal.set(Calendar.DATE,16);
System.out.println(cal);
//String --> Calendar:
// 分解:
//String --> java.sql.Date:
java.sql.Date date = java.sql.Date.valueOf("2022-03-18");
//java.sql.Date --> Calendar:
cal.setTime(date);// 这时cal被date转为新日期了
System.out.println(cal);
}
总结:Date日期类 Calendar日历类 SimpleDateFormat格式转换
练习:
public static void main(String[] args) {
//录入日期的String
Scanner sc= new Scanner(System.in);
System.out.println("请输入你想要查看的日期:(提示:请按照例如:2022-3-18的格式书写):");
String strDate=sc.next();
//System.out.println(strDate);
//String ---> Calendar:
//先将String-->Date:
java.sql.Date date = java.sql.Date.valueOf(strDate);
// 再将Date --> Calendar:
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// 后续操作:
// 星期提示
System.out.println("日\t一\t二\t三\t四\t五\t六\t");
//获取本月的最大天数
int maxDay=cal.getActualMaximum(Calendar.DATE);
//System.out.println(maxDay);
//获取当前日期的日:
int today=cal.get(Calendar.DATE);
//将日期调为本月的1号:
cal.set(Calendar.DATE,1);
//获取这个1号是本周的第几天
int num = cal.get(Calendar.DAY_OF_WEEK);
// System.out.println(num);
//前面空出来的天数为:
int day = num-1;
// 引入一个计数器
int count=0;//计数器最开始值为0
// 在日期前将空格打印出来:
for (int i=1;i<=day;i++){
System.out.print("\t");
}
//空出来的日子也要放入计数器:
count+=day;
//遍历 :从1号开始到maxDay号进行遍历:
for (int i=1;i<=maxDay;i++){
if (i==today){ //如果遍历的i和当前日子一样的话,后面多拼一个*
System.out.print(i + "*" + "\t");
}else{
System.out.print(i + "\t");
}
count++; // 每在控制台输出一个数字,计数器做加1操作
if (count%7==0){ //当计数器的个数是7的倍数的时候 就换行操作
System.out.println();
}
}
}