Calender打印日历

来源:互联网 发布:阿里云 关闭快照功能 编辑:程序博客网 时间:2024/05/16 15:40
import java.util.Scanner;
class Calender 
{
public static void main(String[] args) 
{
Scanner input = new Scanner(System.in);


        System.out.println("输入年份:(格式:1900-~)");
long year=input.nextLong();
if(isRunNian(year)){System.out.println("闰年");}else{System.out.println("平年");}

System.out.println("输入月份:(格式:1-12)");
int month=input.nextInt();
        System.out.println(month+"月总共有:"+getDays(year,month)+"天");


System.out.println("输入日数:(格式:1-31)");
int day=input.nextInt();


System.out.println("总天数:"+getAllDays(year,month,day));


        System.out.println("星期:"+getWeekDay(getAllDays(year,month,day)));


        System.out.println("本月一号是星期:"+getWeekDay(getAllDays(year,month,1)));


        System.out.println();
printCal(year,month);




}




//判断闰年


          static boolean isRunNian(long y){
                 if(y%400==0 || (y%4==0&&y%100!=0))
                      return true;
else
return false;


}
      //判断月份,取天数
 static int getDays(long y,int m){
  int days=0;
switch(m){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
                   days=31;
break;
case 4:
case 6:
case 9:
case 11:
                   days=30;
break;
case 2:
if(isRunNian(y))
days=29;
else
days=28;
    break;
   default:
days=0;
    break;
}


return days;

 }


           //获取去星期天
  static long getAllDays(long y,int month,int day){

long sumDays=0;
//按年取天数
for(long l=1900;l<=y;l++){
if(l<=1900){sumDays=0;}
else if(l>1900 && isRunNian(l)){
sumDays+=366;//闰年366天
}else{
sumDays+=365;//平年365天
}

}
                    
//按月取天
for(int i=1;i<=month-1;i++){
                          sumDays=sumDays+getDays(y,i);
}
                         sumDays+=(long)day;
return sumDays;
}


              ///取周几
static int getWeekDay(long days){

       return (int)days%7;
}


                  


//打印月历
static void printCal(long y,int m){




for(int i=0;i<7;i++){
switch(i){
case 1:System.out.print("星期一   ");break;
case 2:System.out.print("星期二   ");break;
case 3:System.out.print("星期三   ");break;
case 4:System.out.print("星期四   ");break;
case 5:System.out.print("星期五   ");break;
case 6:System.out.print("星期六   ");break;
                            case 0:System.out.print("星期日   ");break;
}
//打印星期的题标

}
System.out.println();
//打印具体日期
   //int[]  d= new int[35];
                         
                        int k=1;int j=1;
for(int i=1;i<=getDays(y,m);i++){

if(i<=getWeekDay(getAllDays(y,m,1))){
                            System.out.print("         ");
}else{
if(k<=9){
System.out.print("   "+k+"     ");
                                 
                                }else{ 
   System.out.print("  "+k+"     ");
  
}
k++;
}
if(i%7==0){
System.out.println();
}

}

}

}


本代码是用于用户控制台按要求输入年、月、日,然后打印是:

闰年或平年,

哪一个月多少天,

从1900值输入日期为止总共

当前日是周几

本月一号是周几

以即本月的月历表