/**
* 日历类
* @author FuJianshi
*
*/
public class Calendar {
private int year; //年
private int month; //月
/**
* 打印日历
*/
public void print(){
//按照日历格式打印
int days = getDays(year,month);
int weeks = getWeeks(year,month);
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
for(int j = 1; j <= weeks; j++){
System.out.print("\t");
}
for (int i = 1; i <= days; i++) {
System.out.print( i + "\t");
if((i + weeks) % 7 == 0){
System.out.println();
}
}
}
/**
* 获取当前月的天数
*/
public int getDays(int year, int month){
int[] daysOfmonth = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int days = daysOfmonth[month];
if(isBigYear(year) && month == 2){
return days + 1;
}else{
return days;
}
}
/**
* 判断闰年
*/
public boolean isBigYear(int year){
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
return true;
}else{
return false;
}
}
/**
* 判断当前年到1970年中间隔了多少天
*/
public int getWeeks(int year,int month){
int days = (year - 1970) * 365;
for(int i = 1970; i < year;i++){
if(isBigYear(i)){
days ++;
}
}
for(int i = 1; i < month; i++){
days += getDays(year,i);
}
return (days + 3) % 7 + 1;
}
}
测试
public static void main(String[] args) {
Calendar c = new Calendar();
c.year = 2018;
c.month = 11;
c.print();
}