SOURCE

//获取当前页面的一个系统域名配置
var carAreaList=new Array();
var item = new Object();
item.areaId=1;
item.cardType=0;
item.timeLong=3600;
item.beginTime=1616346000;// 1-2
carAreaList.push(item);

item = new Object();
item.areaId=2;
item.cardType=1;
item.timeLong=3600;
item.beginTime=1616349600; //2-3
carAreaList.push(item);

item = new Object();
item.areaId=1;
item.cardType=0;
item.timeLong=3600;
item.beginTime=1616353200; // 3-4
carAreaList.push(item);

item = new Object();
item.areaId=2;
item.cardType=1;
item.timeLong=3600;
item.beginTime=1616356800; //4-5
carAreaList.push(item);

var timeInfo=new Array();
timeInfo.push("2021-03-22 10:00-2021-03-22 11:00");
timeInfo.push("2021-03-22 12:00-2021-03-22 13:00");
console.log(JSON.stringify(timeInfo,null));

console.log(JSON.stringify(carAreaList,null));
console.log("标准分段");


//#region  非标代码: 场中场合并计费
    var nscarAreaList=new Array();    
    var nsbeginTime,nsendTime;
  
    if (carAreaList != null && carAreaList.length >= 3) {
      
        for (var i = 0; i < carAreaList.length; i++) {

            if(nscarAreaList.length<=0 ||
            nscarAreaList.filter(c=>c.areaId== carAreaList[i].areaId && c.cardType==carAreaList[i].cardType).length==0){
                 nscarAreaList.push(carAreaList[i]);  
               //   var nsbeginTime = new Date( carAreaList[i].beginTime * 1000);
               //   var nsendTime = new Date(( carAreaList[i].beginTime + carAreaList[i].timeLong) * 1000);
            nscarAreaList[nscarAreaList.length - 1].timeInfo = new Array();
                nscarAreaList[nscarAreaList.length - 1].timeInfo.push(Format(new Date(carAreaList[i].beginTime * 1000)) + "-" + Format(new Date((carAreaList[i].beginTime + carAreaList[i].timeLong) * 1000)));

            for (var j = nscarAreaList.length; j < carAreaList.length; j++) {
                // console.log("j="+j);
                if (carAreaList[j].areaId == nscarAreaList[nscarAreaList.length-1].areaId && 
                carAreaList[j].cardType == nscarAreaList[nscarAreaList.length-1].cardType) {
                    //相同区域相同卡片类型的累计时长                  
                    nscarAreaList[nscarAreaList.length-1].timeLong = nscarAreaList[nscarAreaList.length-1].timeLong + carAreaList[j].timeLong; 
                   nscarAreaList[nscarAreaList.length-1].timeInfo.push(Format(new Date( carAreaList[j].beginTime * 1000))+"-"+Format(new Date(( carAreaList[j].beginTime + carAreaList[j].timeLong) * 1000)));
                       
                }
            }              
            }
           
        }
      //最后合并后修改下开始、结束时间
        //入地面1-2点,地库2-3点,出地面3-4点。最后合并为地面1-3点,地库3-4点
        for (var i = 1; i < nscarAreaList.length; i++) {
            nscarAreaList[i].beginTime = nscarAreaList[i - 1].beginTime + nscarAreaList[i - 1].timeLong;
        }
  
        carAreaList = nscarAreaList;
          //syslog.info("非标:区域模块(v1.7.6_1040086)===>非标最终分段结果:", cMode.ToJson(carAreaList));
    }
    //#endregion



function Format(date, fmt2 = "yyyy-MM-dd hh:mm:ss") { //author: meizz 
    var tmp = new Date(date);
    var fmt = new String(fmt2);

    var o = {
        "M+": tmp.getMonth() + 1,                 //月份 
        "d+": tmp.getDate(),                    //日 
        "h+": tmp.getHours(),                   //小时 
        "m+": tmp.getMinutes(),                 //分 
        "s+": tmp.getSeconds(),                 //秒 
        "q+": Math.floor((tmp.getMonth() + 3) / 3), //季度 
        "S": tmp.getMilliseconds()             //毫秒 
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (tmp.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt))
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
};


//格式化输出 JSON
console.log("非标分段");
console.log(JSON.stringify(carAreaList,null));
//console.log(JSON.stringify(nscarAreaList,null));


console 命令行工具 X clear

                    
>
console