核心方法
//西方日历
//当天日期若为所在周的周日,则默认按西方日历为本周的第一天
//西方日历 周日 第一天 ----- 周六 第七天
//东方日历 周一 第一天 ----- 周日 第七天
//故对 dayOfWeek == 0 这天特殊处理下就好
dayOfWeek = cal.get(Calendar.DAY_OF_WEEK) - 1;
//获取当月天数
maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
实现代码
/**
* 输入年份打印每年日历
* Calendar实现
*
* */
public class A_YearCalendarOfCarlendar {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//年份
int year;
//月份
int month;
//每月天数
int maxDay;
//每月第一号在当周第几天
int dayOfWeek;
//初始化日历
Calendar cal = Calendar.getInstance();
System.out.println("请输入所要查询的年份日历:");
year = input.nextInt();
cal.set(Calendar.YEAR, year);
for (int i = 0; i <= 11; i++) {
month = i;
//设置月份(Calendar 的月份从 0 开始计数)
cal.set(Calendar.MONTH, month);
//设置每月日期(几号)
cal.set(Calendar.DATE, 1);
//西方日历
//当天日期若为所在周的周日,则默认按西方日历为本周的第一天
//西方日历 周日 第一天 ----- 周六 第七天
//东方日历 周一 第一天 ----- 周日 第七天
//故对 dayOfWeek == 0 这天特殊处理下就好
dayOfWeek = cal.get(Calendar.DAY_OF_WEEK) - 1;
//获取当月天数
maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
monthCalendar(year,month + 1,dayOfWeek,maxDay);
}
}
//打印每月日历
public static void monthCalendar(int year,int month,int dayOfWeek,int maxDay) {
int day = 1;
System.out.println(year + " 年 " + month + " 月");
System.out.println("====================================================");
System.out.print("一\t二\t三\t四\t五\t六\t日\n");
if (dayOfWeek == 0)
dayOfWeek = 7;
//每月日历首行打印
//空白打印
for (int i = 0; i < dayOfWeek - 1; i++)
System.out.print("\t");
//日期打印
for (int i = 0; i < 7 - (dayOfWeek - 1); i++)
System.out.print(day++ + "\t");
System.out.println();
//每月日历其他行打印
int j = 1;
while (true) {
//换行 每行打印7个数字
if (j % 8 == 0) {
j = 1;
System.out.println();
}
if (day == maxDay) {
System.out.println(day + "\t");
System.out.println();
break;
} else {
System.out.print(day++ + "\t");
}
j++;
}
}
}
/**
* 输入年份打印每年日历
* LocalDate实现
*
* */
public class A_YearCalendarOfLocalDate {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//年份
int year;
//月份
int month;
//每月天数
int maxDay;
//每月第一号在当周第几天
int dayOfWeek;
//本地日期
LocalDate ld;
System.out.println("请输入所要查询的年份日历:");
year = input.nextInt();
for (int i = 1; i <= 12; i++) {
month = i;
//设置月份(LocalDate 的月份从 1 开始计数)
ld = LocalDate.of(year, month, 1);
//本地日期 周一 第一天 ----- 周日 第七天
dayOfWeek = ld.getDayOfWeek().getValue();
//获取当月天数
maxDay = ld.lengthOfMonth();
// System.out.println(ld);
// System.out.println("year is:" + year);
// System.out.println("month is:" + month);
// System.out.println("dayOfWeek is:" + dayOfWeek);
// System.out.println("maxDay is:" + maxDay);
monthCalendar(year,month,dayOfWeek,maxDay);
}
}
//打印每月日历
public static void monthCalendar(int year,int month,int dayOfWeek,int maxDay) {
int day = 1;
System.out.println(year + " 年 " + month + " 月");
System.out.println("====================================================");
System.out.print("一\t二\t三\t四\t五\t六\t日\n");
//每月日历首行打印
//空白打印
for (int i = 0; i < dayOfWeek - 1; i++)
System.out.print("\t");
//日期打印
for (int i = 0; i < 7 - (dayOfWeek - 1); i++)
System.out.print(day++ + "\t");
System.out.println();
//每月日历其他行打印
int j = 1;
while (true) {
//换行 每行打印7个数字
if (j % 8 == 0) {
j = 1;
System.out.println();
}
if (day == maxDay) {
System.out.println(day + "\t");
System.out.println();
break;
} else {
System.out.print(day++ + "\t");
}
j++;
}
}
}