package com.rj.Calendar;
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;
/**
* 制作一个简单的日历
* @author rj
*
*/
public class Data {
public static void main(String[] args) {
// 输入年月日
Scanner scan = new Scanner(System.in);
System.out.println("请输入日期(如:2022-3-14):");
// 获取输入的日期
String date = scan.nextLine();
try {
// 日期格式化类
DateFormat dFormat = new SimpleDateFormat("yyyy-MM-dd");
// 把字符串类型的日期转换为date类型的
Date parse = dFormat.parse(date);
// 创建一个公历类的实例
Calendar calendar = new GregorianCalendar();
// 把格式化好的日期对象放进Calendar
calendar.setTime(parse);
// 获取今天是几号
int day = calendar.get(Calendar.DATE);
// 时间设置成这个月的一号
calendar.set(Calendar.DATE, 1);
// 获取这个月的第一天是周几
int weekDay = calendar.get(Calendar.DAY_OF_WEEK);
// 获取每个月最大的天数
int maxDay = calendar.getActualMaximum(Calendar.DATE);
System.out.println("日\t一\t二\t三\t四\t五\t六");
// 循环打印空格
for (int i = 1; i < weekDay; i++) {
System.out.print("\t");
}
// 循环打印天数
for (int i = 1; i <= maxDay; i++) {
// 判断如果i等于 今天 在前面打印一个☠做记号
if (i == day) {
System.out.print("☠");
}
System.out.print(i + "\t");
// 获取今天是周几
int num = calendar.get(Calendar.DAY_OF_WEEK);
// 如果是周六就换行
if (num == Calendar.SATURDAY) {
System.out.println();
}
// 天数自增
calendar.add(Calendar.DATE, 1);
}
} catch (ParseException e) {
System.out.println("格式错误");
}
}
}
执行效果: