如何使用Javascript在开始日期和结束日期之间分解数据



我需要一個幫助。我需要按照使用 Javascript start date and end date破坏数据。我在下面解释我的代码。

var data = {
    eid: "9",
    end_date: "2018-01-14",
    event: true,
    mname: "test event2",
    start_date: "2018-01-12",
    user_type: "1"
}

在这里,我start_date =2018-01-12" and end_date:"2018-01-14"在这个数组中。我需要从start date and end date获取每个日期的所有数据,下面给出了expected output

var data = [{
    eid: "9",
    date: "2018-01-12",
    event: true,
    mname: "test event2",
    user_type: "1"
}, {
    eid: "9",
    date: "2018-01-13",
    event: true,
    mname: "test event2",
    user_type: "1"
}, {
    eid: "9",
    date: "2018-01-14",
    event: true,
    mname: "test event2",
    user_type: "1"
}]

我的输出应该像上面一样。

使用 start_dateend_date 创建日期对象,并使用 while 循环从开始日期迭代到结束日期,并继续在数组中添加对象。

var data = {
    eid: "9",
    end_date: "2018-01-14",
    event: true,
    mname: "test event2",
    start_date: "2018-01-12",
    user_type: "1"
},
    endDate = new Date(data.end_date),
    startDate = new Date(data.start_date),
    result = [];
    
function formatDate(date) {
    var d = new Date(date),
        month = '' + (d.getMonth() + 1),
        day = '' + d.getDate(),
        year = d.getFullYear();
    if (month.length < 2) month = '0' + month;
    if (day.length < 2) day = '0' + day;
    return [year, month, day].join('-');
}
    
while(endDate >= startDate) {
  var {eid, event, mname, user_type} = data;
  result.push({eid, event, mname, user_type, date: formatDate(startDate)});
  startDate.setDate(startDate.getDate() + 1);
}
console.log(result);

只需使用日期start_dateend_date进行比较。

var obj = {
    eid: "9",
    end_date: "2018-01-14",
    event: true,
    mname: "test event2",
    start_date: "2018-01-12",
    user_type: "1"
}
var data = [{
    eid: "9",
    date: "2018-01-12",
    event: true,
    mname: "test event2",
    user_type: "1"
}, {
    eid: "9",
    date: "2018-01-13",
    event: true,
    mname: "test event2",
    user_type: "1"
}, {
    eid: "9",
    date: "2018-01-14",
    event: true,
    mname: "test event2",
    user_type: "1"
},
{
    eid: "9",
    date: "2018-01-16",
    event: true,
    mname: "test event2",
    user_type: "1"
}]
var newdata = data.filter((item) => {
return new Date(item.date) > new Date(obj.start_date) && new Date(item.date) < new Date(obj.end_date)
})
console.log(newdata);

试试这个

var InputData = {
    eid: "9",
    end_date: "2018-01-14",
    event: true,
    mname: "test event2",
    start_date: "2018-01-12",
    user_type: "1"
}
var StartDate=moment(InputData.start_date, "YYYY-MM-DD");
var EndDate=moment(InputData.end_date, "YYYY-MM-DD");
var Days=EndDate.diff(StartDate, 'days')
var OutputData=[];
var firstObj={
    eid: InputData.eid,
    date: moment(StartDate).format("YYYY-MM-DD"),
    event:InputData.event ,
    mname:InputData.mname,
    user_type: InputData.user_type
}
OutputData.push(firstObj);
for(var i=1;i<Days+1;i++){
   var mydate=moment(StartDate).add(i, 'day').format("YYYY-MM-DD");
   
   var myObj={
    eid: InputData.eid,
    date: mydate,
    event:InputData.event ,
    mname:InputData.mname,
    user_type: InputData.user_type
   };
   
   OutputData.push(myObj);
}
console.log(OutputData);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>

最新更新