你的位置:首页 > 软件开发 > Java > Java万年历,输入年月获取改年月日历表

Java万年历,输入年月获取改年月日历表

发布时间:2015-07-21 00:00:10
1 //输入年份和月份,打印出这个月的日历表 2 /* 3 1.1900年1月1日是星期一 4 2.计算输入的年份距离1900年有多少天再计算当年1月1日距这个月有多少天 5 1) 6 3.总天数%7得出从星期几开始 7 注:计算机中的时间最小到1900年 ...
 1 //输入年份和月份,打印出这个月的日历表 2 /* 3   1.1900年1月1日是星期一 4   2.计算输入的年份距离1900年有多少天再计算当年1月1日距这个月有多少天 5     1) 6   3.总天数%7得出从星期几开始 7   注:计算机中的时间最小到1900年,此外UNIX系统认为1970年1月1日0点是时间纪元。 8   so,在本程序中不考了1900年以前的年份了。有兴趣的可以自己研究下。 9 */ 10 import java.util.Scanner; 11 class Calender{ 12  13   public static void main(String[] args){ 14      15     print(); 16  17   } 18  19   //打印输出 20   public static void print(){ 21     Scanner sc = new Scanner(System.in); 22     System.out.println("请输入年份:"); 23     int year = sc.nextInt(); 24     System.out.println("请输入月份(1~12):"); 25     int month = sc.nextInt(); 26  27     int days = getDays(year, month);//getDays方法详细请往下看 28     //days+1:day是总天数,输入月份的总天数只是这个月之前的天数, 29     //加上1变为这个月开始的第一天 30     int week = days%7==0?1:days%7+1;//开始的第一天是星期几 31     System.out.println("日\t一\t二\t三\t四\t五\t六"); 32      33     //输出第一行(第一个星期)空出来部分 34     for(int i=1; i<=week; i++){ 35       System.out.print(" \t"); 36     } 37  38     //输出第一行(第一个星期)各天 39     for(int i=1; i<=7-week; i++){ 40       System.out.print(i+"\t"); 41     } 42  43     System.out.println(); 44  45     //1~12月的个月天数 46     int monthDay = 0; 47     switch(month){ 48         case 2: 49           if(year%4==0&&year%100!=0 || year%400==0 ){ 50             monthDay=29; 51           }else{ 52             monthDay=28; 53           } 54           break; 55  56         case 4: 57         case 6: 58         case 9: 59         case 11: 60           monthDay=30; 61           break; 62  63         default : 64           monthDay=31; 65           break; 66       } 67  68     //输出剩下的日期,从第二周开始了,所以是8-week 69     for(int i=8-week; i<=monthDay; i++){ 70    71       System.out.print(i+"\t"); 72        73       //每七天换一行则当日期能整除7就换行 74       if((i+week)%7==0){ 75         System.out.println(); 76       } 77     } 78  79  80   } 81  82   /* 83     计算当年当月的距1900年1.1的总天数 84   */ 85   public static int getDays(int year, int month){ 86     //判断这年是闰年或者平年,得到年的总天数 87     int day1=0, day2=0; 88  89     for(int i=1900; i<year; i++){ 90       if(i%4==0&&i%100!=0 || i%400==0){ 91         day1+=366; 92       }else{ 93         day1+=365; 94       } 95     } 96    97     //得到月的总天数 98     for(int i=1; i<month; i++){ 99       switch(i){100         case 2:101           if(year%4==0&&year%100!=0 || year%400==0 ){102             day2+=29;103           }else{104             day2+=28;105           }106           break;107 108         case 4:109         case 6:110         case 9:111         case 11:112           day2+=30;113           break;114 115         default :116           day2+=31;117           break;118       }119     }120   121     return day1+day2;122 123   }124   125 }

原标题:Java万年历,输入年月获取改年月日历表

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。