题目:输入两个日期,输出两个日期之间的有效日期。
答:
1 function RealDate(start,end){ 2 const dayTimes = 24*60*60*1000; // 换算成毫秒级别 3 const range = end.getTime() - start.getTime(); 4 let total = 0; 5 res = []; 6 while(total <= range && range > 0 ) { 7 res.push(new Date(start.getTime() + total).toLocaleDateString().replace(/\//g,'-'))) 8 total += dayTimes 9 } 10 return res; 11 } 12 13 var start = "2019-02-04" 14 var end = "2019-03-07" 15 //console.log(new Date(start).getTime()) 16 var arr = RealDate(new Date(start),new Date(end)) 17 console.log(arr)
anwser:[ '2019-2-4', '2019-2-5', '2019-2-6', '2019-2-7' ]
主要思路是换算成毫秒级别。采用new Date(ms),此ms表示的是需要与 GMT时间1970年1月1日之间相差的毫秒数。这样一来不需要自己判断每个月的天数,会自动转换。而toLocaleDateString()是根据该日期的日期格式的字符串。后面的正则,是因为不同浏览器toLocaleString的结果可能会出现'2019/09/02'的格式,所以替换.