如何用Java生成特定年月的月历?

2026-06-10 13:332阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计781个文字,预计阅读时间需要4分钟。

如何用Java生成特定年月的月历?

本例展示了如何使用Java打印指定年月的日历。以下是大家的参考代码,包含日期格式、整体内容如下:

如何用Java生成特定年月的月历?

java// 打印指定年月的日历public class PrintCalendar { public static void main(String[] args) { // 指定年月 int year=2023; int month=4;

// 打印 System.out.println(年月: + year + 年 + month + 月);

// 打印日历表头 System.out.println(日 一 二 三 四 五 六);

// 计算该月第一天是星期几 int dayOfWeek=getFirstDayOfWeek(year, month);

// 计算该月有多少天 int daysInMonth=getDaysInMonth(year, month);

// 打印前导空格 for (int i=0; i

// 打印日历 for (int i=1; i <=daysInMonth; i++) { System.out.printf(%2d , i); if ((i + dayOfWeek) % 7==0) { System.out.println(); } } }

// 获取指定年月的第一天是星期几 private static int getFirstDayOfWeek(int year, int month) { // Zeller公式计算星期 int q=1; // 日 int m=month; int k=year % 100; int j=year / 100; int h=(q + (13 * (m + 1)) / 5 + k + (k / 4) + (j / 4) + 5 * j) % 7; return ((h + 5) % 7) + 1; // 转换为星期一为1,星期日为7 }

// 获取指定年月的天数 private static int getDaysInMonth(int year, int month) { int[] daysOfMonth={ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if (month==2 && isLeapYear(year)) { return 29; } return daysOfMonth[month - 1]; }

// 判断是否为闰年 private static boolean isLeapYear(int year) { return (year % 4==0 && year % 100 !=0) || (year % 400==0); }}

本文实例为大家分享了Java打印指定年月日历的具体代码,供大家参考,具体内容如下

日历如下:

程序如下:

//打印指定年月的日历 public class PrintCalendar { public static void main(String[] args) { int year=2013; int month=12; printMonth(year,month); } private static void printMonth(int year, int month) {//打印日历 printMonthTitle(year,month); printMonthBody(year,month); } private static void printMonthTitle(int year, int month) {//打印日历标题 System.out.println(" "+getMonthName(month)+" "+year); System.out.println("------------------------------"); System.out.println(" Sun Mon Tue Wed Thu Fri Sat"); } private static String getMonthName(int month) { String monthName=null; switch(month){ case 1:monthName="January";break; case 2:monthName="February";break; case 3:monthName="March";break; case 4:monthName="April";break; case 5:monthName="May";break; case 6:monthName="June";break; case 7:monthName="July";break; case 8:monthName="August";break; case 9:monthName="September";break; case 10:monthName="October";break; case 11:monthName="November";break; case 12:monthName="December"; } return monthName; } public static boolean isLeapYear(int year){//判断是否为闰年 return year%400==0||(year%4==0&&year%100!=0); } public static int getNumberOfDaysInMonth(int year,int month){//获取对应月份天数 if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) return 31; if(month==4||month==6||month==9||month==11) return 30; if(month==2) return isLeapYear(year)?29:28; return 0; } public static int getTotalNumberOfDays(int year,int month){//获取从1800年到当月的总天数 int total=0; for(int i=1800;i<year;i++){ if(isLeapYear(i)) total=total+366; else total=total+365; } for(int i=1;i<month;i++) total=total+getNumberOfDaysInMonth(year,i); return total; } public static int getStartDay(int year,int month){//获得当月第一天是星期几 int startDay1800=3; int totalNumberOfDays=getTotalNumberOfDays(year,month); return (totalNumberOfDays+startDay1800)%7; } public static void printMonthBody(int year,int month){//打印日历体 int startDay=getStartDay(year,month); int numberOfDaysInMonth=getNumberOfDaysInMonth(year,month); for(int i=0;i<startDay;i++){ System.out.print(" "); } for(int i=1;i<=numberOfDaysInMonth;i++){ if(i<10) System.out.print(" "+i); else System.out.print(" "+i); if((i+startDay)%7==0) System.out.println(); } System.out.println(); } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

本文共计781个文字,预计阅读时间需要4分钟。

如何用Java生成特定年月的月历?

本例展示了如何使用Java打印指定年月的日历。以下是大家的参考代码,包含日期格式、整体内容如下:

如何用Java生成特定年月的月历?

java// 打印指定年月的日历public class PrintCalendar { public static void main(String[] args) { // 指定年月 int year=2023; int month=4;

// 打印 System.out.println(年月: + year + 年 + month + 月);

// 打印日历表头 System.out.println(日 一 二 三 四 五 六);

// 计算该月第一天是星期几 int dayOfWeek=getFirstDayOfWeek(year, month);

// 计算该月有多少天 int daysInMonth=getDaysInMonth(year, month);

// 打印前导空格 for (int i=0; i

// 打印日历 for (int i=1; i <=daysInMonth; i++) { System.out.printf(%2d , i); if ((i + dayOfWeek) % 7==0) { System.out.println(); } } }

// 获取指定年月的第一天是星期几 private static int getFirstDayOfWeek(int year, int month) { // Zeller公式计算星期 int q=1; // 日 int m=month; int k=year % 100; int j=year / 100; int h=(q + (13 * (m + 1)) / 5 + k + (k / 4) + (j / 4) + 5 * j) % 7; return ((h + 5) % 7) + 1; // 转换为星期一为1,星期日为7 }

// 获取指定年月的天数 private static int getDaysInMonth(int year, int month) { int[] daysOfMonth={ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if (month==2 && isLeapYear(year)) { return 29; } return daysOfMonth[month - 1]; }

// 判断是否为闰年 private static boolean isLeapYear(int year) { return (year % 4==0 && year % 100 !=0) || (year % 400==0); }}

本文实例为大家分享了Java打印指定年月日历的具体代码,供大家参考,具体内容如下

日历如下:

程序如下:

//打印指定年月的日历 public class PrintCalendar { public static void main(String[] args) { int year=2013; int month=12; printMonth(year,month); } private static void printMonth(int year, int month) {//打印日历 printMonthTitle(year,month); printMonthBody(year,month); } private static void printMonthTitle(int year, int month) {//打印日历标题 System.out.println(" "+getMonthName(month)+" "+year); System.out.println("------------------------------"); System.out.println(" Sun Mon Tue Wed Thu Fri Sat"); } private static String getMonthName(int month) { String monthName=null; switch(month){ case 1:monthName="January";break; case 2:monthName="February";break; case 3:monthName="March";break; case 4:monthName="April";break; case 5:monthName="May";break; case 6:monthName="June";break; case 7:monthName="July";break; case 8:monthName="August";break; case 9:monthName="September";break; case 10:monthName="October";break; case 11:monthName="November";break; case 12:monthName="December"; } return monthName; } public static boolean isLeapYear(int year){//判断是否为闰年 return year%400==0||(year%4==0&&year%100!=0); } public static int getNumberOfDaysInMonth(int year,int month){//获取对应月份天数 if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) return 31; if(month==4||month==6||month==9||month==11) return 30; if(month==2) return isLeapYear(year)?29:28; return 0; } public static int getTotalNumberOfDays(int year,int month){//获取从1800年到当月的总天数 int total=0; for(int i=1800;i<year;i++){ if(isLeapYear(i)) total=total+366; else total=total+365; } for(int i=1;i<month;i++) total=total+getNumberOfDaysInMonth(year,i); return total; } public static int getStartDay(int year,int month){//获得当月第一天是星期几 int startDay1800=3; int totalNumberOfDays=getTotalNumberOfDays(year,month); return (totalNumberOfDays+startDay1800)%7; } public static void printMonthBody(int year,int month){//打印日历体 int startDay=getStartDay(year,month); int numberOfDaysInMonth=getNumberOfDaysInMonth(year,month); for(int i=0;i<startDay;i++){ System.out.print(" "); } for(int i=1;i<=numberOfDaysInMonth;i++){ if(i<10) System.out.print(" "+i); else System.out.print(" "+i); if((i+startDay)%7==0) System.out.println(); } System.out.println(); } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。