如何用Java生成特定年月的月历?
- 内容介绍
- 文章标签
- 相关推荐
本文共计781个文字,预计阅读时间需要4分钟。
本例展示了如何使用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// 打印指定年月的日历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();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

