【问题标题】:How to get Dates for a week如何获得一周的日期
【发布时间】:2020-09-02 13:32:51
【问题描述】:

我尝试创建一个包含 1 周数据的数组,但除此之外无法计算其他内容

我应该做一个 for 循环还是什么?我很菜鸟,所以我对其进行硬编码以使其工作。 该代码确实有效,但它有点慢而且很奇怪,我认为还有另一种解决方案,请帮助我大声笑

const days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
let today, date;
  

today = new Date();
  date = new Date(today);
  const one = new Date();
  one.setDate(date.getDate() + 1);
  const two = new Date();
  two.setDate(date.getDate() + 2);
  const three = new Date();
  three.setDate(date.getDate() + 3);
  const four = new Date();
  four.setDate(date.getDate() + 4);
  const five = new Date();
  five.setDate(date.getDate() + 5);
  const six = new Date();
  six.setDate(date.getDate() + 6);

  const dataday = [
    {
      day: days[today.getDay()],
      num: today.getDate(),
      date:
        today.getDate() + "-" + today.getFullYear() + "-" + today.getMonth(),
      selected: false,
    },
    {
      day: days[one.getDay()],
      num: one.getDate(),
      date: one.getDate() + "-" + one.getFullYear() + "-" + one.getMonth(),
      selected: false,
    },
    {
      day: days[two.getDay()],
      num: two.getDate(),
      date: two.getDate() + "-" + two.getFullYear() + "-" + two.getMonth(),
      selected: false,
    },
    {
      day: days[three.getDay()],
      num: three.getDate(),
      date:
        three.getDate() + "-" + three.getFullYear() + "-" + three.getMonth(),
      selected: false,
    },
    {
      day: days[four.getDay()],
      num: four.getDate(),
      date: four.getDate() + "-" + four.getFullYear() + "-" + four.getMonth(),
      selected: false,
    },
    {
      day: days[five.getDay()],
      num: five.getDate(),
      date: five.getDate() + "-" + five.getFullYear() + "-" + five.getMonth(),
      selected: false,
    },
    {
      day: days[six.getDay()],
      num: six.getDate(),
      date: six.getDate() + "-" + six.getFullYear() + "-" + six.getMonth(),
      selected: false,
    },
  ];

  console.log(dataday);

【问题讨论】:

  • 数组天数在哪里定义?
  • d-y-m 是一种相当不寻常的格式。

标签: javascript arrays date datetime


【解决方案1】:

我回答了一个类似的问题here,只是为你稍微修改了一下:

  • new Date(); 创建今天的日期
  • temp 对象中获取日 (d)、月 (m) 和年 (y)
  • 查看这个月有多少天(比如九月有 30 天)
  • 创建一个长度为 7 的数组并创建该数组的每个对象
  • 在创建每个对象时,将 temp.d 增加 1
  • 如果您超过该月的天数,请将 1 添加到 temp.m 并将 temp.d 重置为 1(新月份的开始)
  • 做你想要的自定义对象表示

console.log(getThisWeek());

function getThisWeek() {
  var today = new Date();
  const temp = {
    d: today.getDate(),
    m: today.getMonth(),
    y: today.getFullYear(),
  }
  const numDaysInMonth = new Date(temp.y, temp.m + 1, 0).getDate()

  return Array.from({length: 7}, _ => {
    if (temp.d > numDaysInMonth){
      temp.m +=1;
      temp.d = 1;
      // not needed, Date(2020, 12, 1) == Date(2021, 0, 1)
      /*if (temp.m >= 12){
        temp.m = 0
        temp.y +=1
      }*/
    }      

    const newDate = new Date(temp.y, temp.m, temp.d++); //.toUTCString()

    return {
      day: newDate.toLocaleDateString('en-US', {weekday: 'short'}),
      num: newDate.getDate(),
      date: newDate.getDate() + "-" + newDate.getFullYear() + "-" + newDate.getMonth(),
      selected: false,
    };
  });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-19
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多