import moment from 'moment';


/**
 * 获取日期所在年份、月份、季度、星期的第一天和最后一天
 * @param dimension 维度 ----- 年份year、月份month、季度quarter、星期week、天day
 * @param showDetail 如果为true，返回的格式为YYYY-MM-DD HH:mm:ss，如果为false，返回的格式为YYYY-MM-DD，默认为false
 * @param date 日期，默认为当前日期，格式为YYYY-MM-DD，如2023-01-01
 */
export const GetBeginAndEndDate = (dimension: "year" | "month" | "quarter" | "week" | "day", showDetail = false, date = moment(new Date()).format("YYYY-MM-DD")) => {
  let formatStr = showDetail ? "YYYY-MM-DD HH:mm:ss" : "YYYY-MM-DD"
  let startTime = moment(date).startOf(dimension).format(formatStr);
  let endTime = moment(date).endOf(dimension).format(formatStr);
  return {
    startTime,
    endTime
  }
}

/**
 * 日期推算算法
 *
 * @param type 需要获取的时间范围
 * @returns 返回的是 [年月日，年月日] // moment格式
 */
export const GetDataReckon = (type: '本日' | '上日' | '上周' | '上月' | '上季度' | '上年' | '近一周' | '近一月' | '近一年') => {
  console.log('type', type);
  let myData: any[] = [], year = moment().year(), month = moment().month(), quarter = moment().quarter(), firstDay = 0, lastDay = 0;
  // 时间获取思路一周：按照国外计算方法，获取上周一及本周日时间，即为上周时间
  // moment().year() 获取当前年 返回值number
  // moment().month() 获取月 返回值number 范围为 0-11 
  //  本日
  if (type === '本日') {
    let todayDay = moment((moment().unix()) * 1000).format('YYYY-MM-DD');
    myData = [
      moment(todayDay, 'YYYY-MM-DD'),
      moment(todayDay, 'YYYY-MM-DD')
    ];
  }
  //  上日
  if (type === '上日') {
    let lastDay_1 = moment((moment().unix() - 24 * 60 * 60) * 1000).format('YYYY-MM-DD');
    myData = [
      moment(lastDay_1, 'YYYY-MM-DD'),
      moment(lastDay_1, 'YYYY-MM-DD')
    ];
  }
  // 上周 
  else if (type === '上周') {
    myData = [
      moment(moment().day(-6).format('YYYY-MM-DD'), 'YYYY-MM-DD'),
      moment(moment().day(0).format('YYYY-MM-DD'), 'YYYY-MM-DD')
    ];
  }
  // 上月
  else if (type === '上月') {
    // // console.log("firstDay, lastDay:", firstDay, lastDay);
    // month = 2;
    switch (month) {
      case 0:
        year -= 1;
        month = 12;
        firstDay = 1;
        lastDay = 31;
        myData = [
          moment(year + "-" + month + "-0" + firstDay, 'YYYY-MM-DD'),
          moment(year + "-" + month + "-" + lastDay, 'YYYY-MM-DD')
        ];
        break;
      case 11:
        firstDay = 1;
        lastDay = 30;
        myData = [
          moment(year + "-" + month + "-0" + firstDay, 'YYYY-MM-DD'),
          moment(year + "-" + month + "-" + lastDay, 'YYYY-MM-DD')
        ];
        break;
      case 10:
        firstDay = 1;
        lastDay = moment(year + "-" + month, "YYYY-MM").daysInMonth(); //获取当前月份总天数
        myData = [
          moment(year + "-" + month + "-0" + firstDay, 'YYYY-MM-DD'),
          moment(year + "-" + month + "-" + lastDay, 'YYYY-MM-DD')
        ];
        break;
      default:
        firstDay = 1;
        lastDay = moment(year + "-0" + month, "YYYY-MM").daysInMonth(); //获取当前月份总天数
        myData = [
          moment(year + "-0" + month + "-0" + firstDay, 'YYYY-MM-DD'),
          moment(year + "-0" + month + "-" + lastDay, 'YYYY-MM-DD')
        ];
        break;
    }
  }
  // 上季度
  else if (type === '上季度') {
    switch (quarter) {
      case 1:
        year -= 1;
        firstDay = 1;
        lastDay = moment(year + "-12", "YYYY-MM").daysInMonth();
        myData = [
          moment(year + "-09-0" + firstDay, 'YYYY-MM-DD'),
          moment(year + "-12-" + lastDay, 'YYYY-MM-DD')
        ];
        break;
      case 2:
        firstDay = 1;
        lastDay = moment(year + "-03", "YYYY-MM").daysInMonth();
        myData = [
          moment(year + "-01-0" + firstDay, 'YYYY-MM-DD'),
          moment(year + "-03-" + lastDay, 'YYYY-MM-DD')
        ];
        break;
      case 3:
        firstDay = 1;
        lastDay = moment(year + "-06", "YYYY-MM").daysInMonth();
        myData = [
          moment(year + "-04-0" + firstDay, 'YYYY-MM-DD'),
          moment(year + "-06-" + lastDay, 'YYYY-MM-DD')
        ];
        break;
      case 4:
        firstDay = 1;
        lastDay = moment(year + "-09", "YYYY-MM").daysInMonth();
        myData = [
          moment(year + "-07-0" + firstDay, 'YYYY-MM-DD'),
          moment(year + "-09-" + lastDay, 'YYYY-MM-DD')
        ];
        break;
    }
  }
  else if (type === '上年') {
    myData = [
      moment(moment().year() - 1 + "-01-01", 'YYYY-MM-DD'),
      moment(moment().year() - 1 + "-12-31", 'YYYY-MM-DD')
    ];
  }
  else if (type === '本日') {
    let today = moment((moment().unix()) * 1000).format('YYYY-MM-DD');
    let lastDay_2 = moment((moment().unix()) * 1000).format('YYYY-MM-DD');
    myData = [
      moment(today, 'YYYY-MM-DD'),
      moment(lastDay_2, 'YYYY-MM-DD')
    ];
  }
  else if (type === '近一周') {
    // // console.log('当天时间：', moment((moment().unix()) * 1000).format('YYYY-MM-DD'));
    myData = [
      moment(moment((moment().unix() - 7 * 24 * 60 * 60) * 1000).format('YYYY-MM-DD'), 'YYYY-MM-DD'),
      moment(moment((moment().unix()) * 1000).format('YYYY-MM-DD'), 'YYYY-MM-DD'),
    ];
  }
  else if (type === '近一月') {
    myData = [
      moment(moment((moment().unix() - 30 * 24 * 60 * 60) * 1000).format('YYYY-MM-DD'), 'YYYY-MM-DD'),
      moment(moment((moment().unix()) * 1000).format('YYYY-MM-DD'), 'YYYY-MM-DD'),
    ];
  }
  else if (type === '近一年') {
    myData = [
      moment(moment((moment().unix() - 365 * 24 * 60 * 60) * 1000).format('YYYY-MM-DD'), 'YYYY-MM-DD'),
      moment(moment((moment().unix()) * 1000).format('YYYY-MM-DD'), 'YYYY-MM-DD'),
    ];
  }
  // // console.log("字符串时间：", moment(myData[0]).format('YYYY MM DD'));
  return myData;
};

