如何实现一个万年历

您所在的位置:网站首页 万年历一一 如何实现一个万年历

如何实现一个万年历

2024-07-14 22:40| 来源: 网络整理| 查看: 265

万年历的话就是有从1990.1.1开始的所有年份的月份的信息。下面将实现一个某年某月的信息。

从键盘上输入年份和月份,显示当前月份的日历的信息,输出日历的头部 ,输出空格,输出日期。(1900.1.1号是星期一)

如:

输出指定月的月份,需要了解该月的相关条件:

 

1.该月有多少天

2.该月的1号是星期几(求距离1990.1.1的总天数)

3.如何将当月日期一一对应星期

解决了这三个问题,就可以打印出指定年份的月的日历了。

 

一、求某年某月里该月里面有多少天

      众所周知,一年12个月当中除了2月天数都是固定的。只有2月才随年份改变。

      如何判断月份是小月还是大月会简单(手紧握)。大月就是该月有31天,小月就是有30天,基本是不需要年份就可以判断该月的天数的,唯独一个二月,二月就需要年份的判断。二月是一个小月,按前面来说应该是30天的,但是就是它不同,2月在闰年的时候是29天,在平年的时候是28天。这样的话就需要判断该年是闰年还是平年。就可以知道指定月里有多少天数了。

 

 1.判断某年是闰年和平年

      如果某年是闰年的话,该年一共有366天,因为2月是29天。平年的话,就是365天。

      闰年是啥:

      1.该年份能被4整除且不能被100整除。

或  2.该年份能被400整除。

public static boolean isLeap(int year){//如何year是闰年则返回true,否则返回false if( ( year%4 == 0 && year%100 != 0 ) || year%400 == 0 ){ return true; } return false; }

2.求出某年某月有多少天

public static int getMonthDay(int year,int month){ int days = 0; switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31;break; case 2: if(isLeap(year)){ //是闰年 days = 29; }else{ days = 28; } break; case 4: case 6: case 9: case 11: days = 30;break; } return days; }

二、该月的1号是星期几(求距离1990.1.1的总天数)

  如何求该月1号是星期几。首先要求出该年该月距离1990.1.1的总天数是多少,然后在除以7余下的的余数就是该月1号是星期几了。因为每周只有7天,星期一到星期七,在星期七再过一天就是星期一了,那就是相当于每7天就会重新开始,所以要求除7的余数。

  1.求某年某月距离1990.1.1的总天数

    前面已经知道了如何判断闰年和每个月的天数,所以要求距离1990.1.1的总天数,就是从某年-1990 依次遍历,和某年某月剩下的天数依次求解就行啦。

public static int getTotalDays(int year ,int month){ int days = 0; //计算[1990,year)年份的天数 year年不完整 按月来计算 for(int i=1990;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3