小米日历一个小实现

2020-01-01  本文已影响0人  姜小白哦

相信大家在开发app(原生、h5、混编)的时候,总会遇到一些自带的控件没办法直接使用,就拿我前些天工作上遇到的一个需求,我需要做一个类似于企业微信考勤打开的日历,上面可以统计员工每个的考勤情况,那么直接拿原生的控件肯定无法实现这个需求的(至少原生android、h5的一些ui框架没有找到现成的),那么这个实现我们就需要自己手动去实现。

那么如何去实现一个日历呢?在这里我就以小米日历为例子将下核心思路和算法

第一步:我们需要算出xxxx年xx月有多少天,这个很简单我就不贴代码了。

第二步:我们需要算出xx月的第一天是星期几,那么我们就要使用“蔡勒公式”去实现,具体公式讲解在这个链接里面: https://zh.wikipedia.org/wiki/%E8%94%A1%E5%8B%92%E5%85%AC%E5%BC%8F [这是维基百科,需要搭个梯子]

第三步:我们需要知道,xx月的上一个月有多少天,我们来看下,下图中的小米日历:

小米日历截图

我们一眼可以看到在数字的上面分别是:日、一、二、三、四、五、六。2019年12月1日是 “一”、而2020年1月1日是“三”,那么:日、一、二就是上个月的多少号了。接下来我们就可以通过这个通项公式把上个月对应的号数算出来。

   1、2020.1.1是星期三,这一天和星期日相差3天,这个我们在第二大步实现的时候可以一并算出来   

   2、用算出来的差做为一个单循环

   3、用:ds+(j+(-n)) 算出结果,其中:ds表示上个月的天数、j是n的循环变量、n是第一小步求出来的差

  最后我们以2020.1.1号做验证,ds=31, j=1&&j<=3,n=3

    j=1   31+(1+(-3))=29

    j=2   31+(2+(-3))=30

    j=3   31+(3+(-3))=31

总结:貌似没啥好总结的,实现都比较简单,希望对大家有所帮助,努力做一名合格的程序员吧,共勉。

上一篇 下一篇

猜你喜欢

热点阅读