为了账号安全,请及时绑定邮箱和手机立即绑定

以 json 格式获得整整 3 年

以 json 格式获得整整 3 年

富国沪深 2021-06-04 17:12:26
用 3 整年创建 json 对象的最佳方法是什么。例如:{    2017:{        jan:[            {day:'monday', timestamp:12512421},            {day:'tuseday', timestamp:151512}        ]...    },    2018:{        jan:[                {day:'monday', timestamp:12512421},                {day:'tuseday', timestamp:151512}        ]...    }    2019:{        jan:[            {day:'monday', timestamp:12512421},            {day:'tuseday', timestamp:151512}        ]...    }}我需要能够显示未来一周的。例如:2019 年第 8 周的日期是什么。我需要知道从哪里开始制定 json 对象……或者它是否已经存在于某种库中。但我不确定从什么开始开始尝试。
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

function setYearObject(yearStart, yearEnd) {

    const obj = {};

    const start = new Date(yearStart, 0);

    const end = new Date(yearEnd, 0);

    const months = {

      Jan: [], Feb: [], Mar: [], Apr: [], May: [], Jun: [],

        Jul: [], Aug: [], Sep: [], Oct: [], Nov: [], Dec: []

    };

 

    while (yearStart < yearEnd) { obj[yearStart++] = months  }

    while (start < end) {

        const timeStamp = start.getTime()

        const parts = start.toDateString().split(" ");

        const year = start.getFullYear().toString()

 

        obj[year][parts[1]].push({ day: parts[0], timeStamp: timeStamp });

        start.setDate(start.getDate() + 1);

    }

    return obj;

}


console.log(setYearObject(2017, 2020))


查看完整回答
反对 回复 2021-06-11
?
烙印99

TA贡献1829条经验 获得超13个赞

我不知道这是否是实现这一目标的好方法......但无论如何这就是我现在拥有的方式。


setYearObject(yearStart, yearEnd) {

    let obj = {};

    let start = new Date(yearStart,0);

    let currentYear = yearStart;

    let currentDay = start;

    let week = [];


    while(currentYear <= yearEnd){    

        obj[currentYear] = [];

        currentYear++;

    }

    currentYear = yearStart;

    console.log(currentDay.getDate());

    while(currentYear !== parseInt(yearEnd) +1){

        week[currentDay.getDay()] = {day: currentDay.getDate(), month:currentDay.getMonth(), dayOfWeek: this.getWeekday(currentDay.getDay())}


        if(currentDay.getDay() >= 6){

            obj[currentYear].push(week);

            week = [];

        }

        currentDay.setDate(currentDay.getDate() + 1);

        currentYear = currentDay.getFullYear();

    }


    for (var property in obj) {

        if (obj.hasOwnProperty(property)) {

            let tmpYear = parseInt(property);

            if(obj[property].length <=52 && obj[property].length >= 1){

                // obj[(tmpYear)].push(obj[(tmpYear + 1)][0])

                console.log(obj[tmpYear + 1])

                if( obj[tmpYear + 1] !== undefined){

                    if((obj[tmpYear +1]).length >= 1){

                        obj[tmpYear].push(obj[tmpYear + 1 ][0]);

                    }  

                }

            }

        }

      }

    console.log(obj);

    return obj;

}


查看完整回答
反对 回复 2021-06-11
  • 2 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信