在做项目时会遇到采集系统的记录,比如一个项目测试要跑很久这个时候就需要在软件系统上显示项目运行了多少天,从开始测试开始一共用了多少年多少月。
年的话还好计算只需要把年份减掉就可以了,相比之下月份和天数就比较难确定,一年有12个月,每个月对应的天数都不同,还有年份不同但是结束测试的月份比开始测试的月份小一些,这样的话难免会进一,这样还好。涉及到天数时其中有很多种月份的情况,一年12个月,一共有7个月是31天,4个月是30天,还有二月份闰年是29天,平年是28天。
这里针对平年来判断一下,如果想要实现闰年的话在最前面加上一个判断闰年和平年的函数就可以了。这里以一年365天来算。
我们首先拿到结束测试时间和开始测试时间的年月日,通过数组来存储他们,分别比对开始测试时间和结束测试时间的年月日。这里分别获取他们的前六位并把他们放到数组中,以241120为例子这个是当前的时间。展现到数组里就是24,11,20,我们在和开始测试的时间211226,展现到数组中就是21,12,26,然后来判断一共过去了多少个月,和多少天。
首先我们来判断开始测试时间和结束测试时间的年份是否相等,如果相减为0的话我们只需要判断同一年里过去的天数和月数,这里示例如下,因为涉及到的情况比较繁琐,这里我用了一种比较笨的方法,首先先把1,3,5,7,8,10,12,这些大月放在一起,然后把2,4,6,9,这些30天的月份放在一起,最后2月单独放在一起,利用条件结构实现到具体月份的索引,这样的话就实现了除了月份之外,单独天数的相差的计算。
月份这里,因为如果结束测试时间和开始测试时间他们的天数相差超过30天,可以整除30这个就要在算上一个月,所以在这里加了一个判断的功能。
因为在同一年里,结束测试的月份肯定是大于开始测试的月份,这里确定月份后,以每个月固定30天来计算然后乘以相差的月份,然后在计算因为月份有31天和30天和28天所导致的区别,分别加上区别的天数就得到了所差月份导致的天数具体值。
下面我们来介绍一下,当年份不同时,也就是说我们运行了好几年之后,这个天数和月数是多少呢,这里就要针对年份来计算,这里我们还是以一年365天来计算,如果年份相差满一年但是月份相差较小,这里需要把年份之差减一。
针对相差过多的年份我们需要将月份乘以12在进行计算,然后再加上相应的月份相减之差,这里月份也分了两种情况,一种是当结束测试的月份大于开始测试的月份,还有一种情况是结束测试的月份小于开始测试的月份。
分别需要不同的计算方法来计算,这里是结束测试的月份小于开始测试的月份。
天数也是一样,我们先确定相差的年份,然后拿年份乘以365天,在加上相差的月份,这里还是拿一个月30天来乘然后根据索引的月份来判断最后加上多少天,最后来计算结束测试的时间和开始测试的时间天数之差,这里和之前也是一样,通过条件结构来分类一共几种情况,给他区分开,然后在计算即可。
这里我用到的方法属于比较笨拙了,把每个月按照30天计算,然后在枚举出不同月份31天,30天,28天,可能出现的情况,目前还没有好的办法,后面如果有更简便更精确的办法会继续更新上来。