起因
我要做一个可选择“今天”、“明天”、“后天”的时间控件供用户选择,并发送选定后的日期给服务端。
刚开始我是获取当前日期进行 +0、+1、+2 操作的,怪我想的太简单,跨月跨年之后很快暴露问题!
那么我要如何解决这个问题呢?
算平年 or 闰年?算这个月有多少天?算下个月有多少天?(看起来好复杂啊,我太懒…)
setDate
还好此时看到前人一段代码中的 setDate(0)
,Ok 一起来学习下
首先 setDate(0)
是获取上个月的最后一天的意思,来看个例子。
貌似没什么问题。
再来看一下2月份是否也正常。(月份是从0开始的,所以此时设置2,即为3月)
也没什么问题~
那么setDate()除了可以设置0之外还可以怎么用?我试着设置除0外的其他数字。
到这里,setDate(n)的用法已经一清二楚了:
- n为0 —— 上个月的最后一天
- n为-1 —— 上个月最后一天的前一天
- n大于0 且 小于本月的天数 —— 本月的第n天
- n大于本月的天数 —— 减去本月的天数后再设置日期
比如setDate(34)后是2020/2/3,其计算过程:34-31=3
比如setDate(63)后是2020/3/3,其计算过程:63-31-29=3
是不是此刻这个问题就变得so easy了~