该问题主要解决已知起始时间和延续时长求总天数。
比如:起始日期为2019.9.1,已知期限为三个月,那么终止时间为2019.12.1。根据以上来求这三个月到底有多长时间。
这道题的本质在于平年闰年的判断和日期循环规律的掌握和应用。以三个月为例,我们需要注意的关键点有一下几点:
1、这三个月是否是同一年份的三个月;
2、如果不是同一年的三个月需要判断改日期的下一年是平年还是闰年;
3、在月份数加三的时候,会产生超过12的月份数,此时应该如何处理;
4、虽然说是一共三个月,但是实际计算的时候需要考虑四个月每一个月具体有多少天;
根据以上关键点,可以得出以下的思维导图(以三个月为例):
1、在类中定义两个数组分别表示平年表和闰年表
public int[] a={0,31,29,31,30,31,30,31,31,30,31,30,31}; //闰年月份表 a[i]=x表示i月有x天(其中a[0]和b[0]没有使用) public int[] b={0,31,28,31,30,31,30,31,31,30,31,30,31}; //平年月份表
(其实这里a[i]表示第i+1月会在后面省去很多不必要的麻烦,但是这里我为了逻辑清晰就直接用a[i]表示第i月)
2、后续就是用if_else语句判断年月的类型,然后根据年月类型进行相应计算了。具体条件判断分支可参考我上面那张思维导图。
该类对应的接口如下:
public interface CalendarInterface { int getYear(); void setYear(int year); int getMonth(); void setMonth(int month); int getDay(); void setDay(int day); int getMyDays(int category); String getEndDate(int category);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)