一、效果图
日期选择组件大概长这样:
从效果图可以看出,日期选择组件由两部分组成:日历表格和顶部操作栏。
二、日历表格
日期选择组件的核心主体是日历表格:
可以将日历表格表示成一个7✖️*的二维数组,数组中的每一项为一个日期。
一个月有28/29/30/31天,一个星期有7天,最极端的情况,日历数组是一个7✖️4的二维数组,大部分月份都是7✖️5或者7✖️6的二维数组。
不妨假设数组的列是6,非当月的日期用上一月/下一月的日期代替。
从今天出发,获取今天所在月的日历数组。
获取指定日期所在月的日历数组
1.要获取当前月的日历数组,只需要获取每一周的周数组,按照之前的假设一共6周,循环6次,将每一周的周数组合在一起就是月数组。
2.获取第一周的周数组,需要先获取今天所在月的第一天firstDayOfMonth,这样就可以知道第一周的第一天,一周7天,循环7次,就得到第一周的周数组。
3.同理可得之后6周的周数组。
4.最终得到当月的日历数组,具体算法如下:
通过以上方法,给定任意一个日期,可以得到当月的日历