1
// js 获取当前日期到之后一个月30天的日期区间 var dateList = []; let startDate = new Date(); let endDate = new Date(); endDate.setDate(startDate.getDate() + 30); while ((endDate.getTime() - startDate.getTime()) >= 0) { let month = (startDate.getMonth() + 1).toString().length === 1 ? "0" + (startDate.getMonth() + 1).toString() : ( startDate.getMonth() + 1); let day = startDate.getDate().toString().length === 1 ? "0" + startDate.getDate() : startDate.getDate(); dateList.push(month + "-" + day); startDate.setDate(startDate.getDate() + 1); } console.log(dateList) // ["11-06", "11-07", "11-08", "11-09", "11-10", "11-11", "11-12", "11-13", "11-14", "11-15", "11-16", "11-17", "11-18", "11-19", "11-20", "11-21", "11-22", "11-23", "11-24", "11-25", "11-26", "11-27", "11-28", "11-29", "11-30", "12-01", "12-02", "12-03", "12-04", "12-05", "12-06"]
2
//获取当前日期 var date = new Date(); var year = date.getFullYear(); var month = date.getMonth()+1; var day = date.getDate(); var nowDate = year + "-" + (month < 10 ? "0" + month : month) + "-" + (day < 10 ? "0" + day : day); //获取30天前得日期 var lastDate = new Date(date - 1000 * 60 * 60 * 24 * 30);//最后30天可以更改,意义:是获取多少天前的时间 var lastY = lastDate.getFullYear(); var lastM = lastDate.getMonth()+1; var lastD = lastDate.getDate(); var LDate = lastY + "-" + (lastM < 10 ? "0" + lastM : lastM) + "-"+(lastD < 10 ? "0" + lastD : lastD);//得到30天前的时间
3
1、获取当前月份的【后】12个月,获取最近的12个月 var dataArr = []; var data = new Date(); var year = data.getFullYear(); data.setMonth(data.getMonth() - 1, 1) //获取到当前月份,设置月份 for (var i = 0; i < 12; i++) { data.setMonth(data.getMonth() + 1); //每次循环一次 月份值减1 var m = data.getMonth() + 1; m = m < 10 ? "0" + m : m; dataArr.push(data.getFullYear() + "-" + (m)) } console.log(dataArr) //["2019-11", "2019-12", "2020-01", "2020-02", "2020-03", "2020-04", "2020-05", "2020-06", "2020-07", "2020-08", "2020-09", "2020-10"] 2、获取当前月份的【前】12个月,获取最近的12个月 var dataArr = []; var data = new Date(); var year = data.getFullYear(); data.setMonth(data.getMonth()+1, 1)//获取到当前月份,设置月份 for (var i = 0; i < 12; i++) { data.setMonth(data.getMonth() - 1);//每次循环一次 月份值减1 var m = data.getMonth() + 1; m = m < 10 ? "0" + m : m; dataArr.push(data.getFullYear() + "-" + (m)) } console.log(dataArr); // ["2019-11", "2019-10", "2019-09", "2019-08", "2019-07", "2019-06", "2019-05", "2019-04", "2019-03", "2019-02", "2019-01", "2018-12"] 释疑:①JS的Date.setMonth()方法坑【可能存在的问题】: 在业务寻找问题的时候,测试输出date.format('yyyy-MM-dd'),看到的值为2019-03-01。从2019-03-01中我发现了原因,是因为2019-02-29此天不存在,故输出2019-03-01,这才导致了输出2019-03的问题。 正确设置上个月份的的方式应该为date.setMonth(date.getMonth()-1,1);使用setMonth(month,date)来进行修改,而不是使用setMonth(month)方法,避免出现此类问题。 ②用 getYear()方法取出时 结果为 119 //(2019-1900=119)
4
function formatEveryDay(start, end) { let dateList = []; var startTime = getDate(start); var endTime = getDate(end); while ((endTime.getTime() - startTime.getTime()) >= 0) { var year = startTime.getFullYear(); var month = startTime.getMonth() + 1 < 10 ? '0' + (startTime.getMonth() + 1) : startTime.getMonth() + 1; var day = startTime.getDate().toString().length == 1 ? "0" + startTime.getDate() : startTime.getDate(); dateList.push(year + "-" + month + "-" + day); startTime.setDate(startTime.getDate() + 1); } return dateList; } function getDate(datestr) { var temp = datestr.split("-"); var date = new Date(temp[0], temp[1] - 1, temp[2]); return date; }
5
// 格式化时间,获取两个日期之间所有月份 function getMonthBetween(start, end) { //传入的格式YYYY-MM let dateList = []; // 时间格式 ‘2019-04-01’ let dateList2 = []; // 时间格式 ‘2019-04’ var s = start.split("-"); var e = end.split("-"); var min = new Date(); var max = new Date(); min.setFullYear(s[0], s[1] * 1 - 1, 1); // 开始日期 max.setFullYear(e[0], e[1] * 1 - 1, 1); // 结束日期 var current = min; while (current <= max) { var year = current.getFullYear(); var month = current.getMonth() + 1 < 10 ? '0' + (current.getMonth() + 1) : current.getMonth() + 1; dateList.push(year + "-" + month + "-" + '01'); dateList2.push(year + "-" + month); current.setMonth(month); } return [dateList, dateList2]; } getMonthBetween('2018-12-05','2019-03-16'); // [["2018-12-01","2019-01-01","2019-02-01","2019-03-01"], ["2018-12","2019-01","2019-02","2019-03"]]
6
function getDateDiff(startDate, endDate) { var startTime = new Date(Date.parse(startDate.replace(/-/g, "/"))).getTime(); var endTime = new Date(Date.parse(endDate.replace(/-/g, "/"))).getTime(); var dates = Math.abs((startTime - endTime)) / (1000 * 60 * 60 * 24); return dates; } getDateDiff('2019-05-30','2019-05-20')
7
// js 获取一个月有多少天的方式 function getMonthDay(year, month) { let days = new Date(year, month + 1, 0).getDate() return days } new Date()第3个参数默认为1,就是每个月的1号,把它设置为0时, new Date()会返回上一个月的最后一天,然后通过getDate()方法得到天数
end