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

12-16 19:14
查看更多