获取未来几天的日期

2022-08-19  本文已影响0人  Neuro_annie
/**
 * @description 获取未来几天的日期
 * @param {date | number | string} date - new Date() | new Date().getTime() | '2020-10-10'
 * @param {number} day 未来天数,默认七天
 * @returns {Array} 未来几天的时间
 */
export function getNextFewDays(date, day = 7) {
  const today = new Date(date);
  const arr = [];
  for (let i = 1; i <= day; i++) {
    const day_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * i;
    const tDate = dateFormat(day_milliseconds, "yyyy-MM-dd");
    arr.push(tDate);
  }
  return arr;
}

//getNextFewDays("2022-09-12")  ==> ['2022-09-13', '2022-09-14', '2022-09-15', '2022-09-16', '2022-09-17', '2022-09-18', '2022-09-19']
//getNextFewDays("2022-09-12", 3)  ==> ['2022-09-13', '2022-09-14', '2022-09-15']

未来七天安排
/**
 * @description 对日期进行格式化,
 * @param {date | number | string} date - new Date() | new Date().getTime() | '2020-10-10'
 * @param {string} format - 进行格式化的模式字符串 yyyy-MM-dd hh:mm:ss:SS q W
 * @example
 * // format = 'yyyy-MM-dd' => '2021-10-10'
 *  支持的模式字母有:
 *  y:年,
 *  M:年中的月份(1-12),
 *  W:年中的第几周,
 *  d:月份中的天(1-31),
 *  h:小时(0-23),
 *  m:分(0-59),
 *  s:秒(0-59),
 *  S:毫秒(0-999),
 *  q:季度(1-4)
 * @returns {string}
 */
export function dateFormat(date, format) {
  if (!checkDate(date)) {
    return "--";
  }
  date = new Date(date);
  const map = {
    M: date.getMonth() + 1, // 月份
    W: getWeekNumber(date), // 周
    d: date.getDate(), // 日
    h: date.getHours(), // 小时
    m: date.getMinutes(), // 分
    s: date.getSeconds(), // 秒
    q: Math.floor((date.getMonth() + 3) / 3), // 季度
    S: date.getMilliseconds() // 毫秒
  };

  return format.replace(/([yMWdhmsqS])+/g, (all, t) => {
    let v = map[t];
    if (v !== undefined) {
      if (all.length > 1) {
        v = "0" + v;
        v = v.substr(v.length - 2);
      }
      return v;
    } else if (t === "y") {
      return (date.getFullYear() + "").substr(4 - all.length);
    }
    return all;
  });
}
上一篇下一篇

猜你喜欢

热点阅读