/**
 *  @name:rectify_date
 *  用途:   日期/事件处理方法类
 *         主要提供日期时间相关的处理函数
 *  @version:0.1.0
 */

//---------------------------------------------------
// 日期格式化
// 格式 YYYY/yyyy/YY/yy 表示年份
// MM/M 月份
// W/w 星期
// dd/DD/d/D 日期
// hh/HH/h/H 时间
// mm/m 分钟
// ss/SS/s/S 秒
//---------------------------------------------------

//当前日期 分
export function formatDeadLineDate(specDate) {
  const returnObj = { value: '', class: '' };
  if (specDate != null && specDate.length > 0) {
    const year = new Date().getFullYear();
    const month = new Date().getMonth() + 1; // 记得当前月是要+1的
    const dt = new Date().getDate();
    const strToday = year + '-' + month + '-' + dt;
    const diffDays = getDifferDate(strToday, specDate, 1);
    if (diffDays < 0) {
      returnObj.value = specDate;
      returnObj.class = 'zgDateExpired';
    } else if (diffDays >= 0 && diffDays <= 7) {
      returnObj.value = specDate;
      returnObj.class = 'zgDateExpiring';
    } else {
      returnObj.value = specDate;
      returnObj.class = 'zgDateNormal';
    }
  } else {
    returnObj.value = '未指定';
    returnObj.class = 'zgDateUndefined';
  }

  return returnObj;
}

export function getDifferDate(firstDate, secondDate, differ) {
  //1)将两个日期字符串转化为日期对象
  const startDate = new Date(firstDate);
  const endDate = new Date(secondDate);
  //2)计算两个日期相差的毫秒数
  const msecNum = endDate.getTime() - startDate.getTime();
  //3)计算两个日期相差的天数
  const dayNum = Math.floor(msecNum / getDifferScale(differ));
  return dayNum;
}

//获取与毫秒数的转化比例（相差天数：1，相差小时数：2，相差分钟数：3，相差秒数：4）
export function getDifferScale(value) {
  var format;
  //获取转化比（天数跟毫秒数的比例）
  if (value === 1) {
    format = parseFloat(24 * 60 * 60 * 1000);
  }
  //获取转化比（小时数跟毫秒数的比例）
  else if (value === 2) {
    format = parseFloat(60 * 60 * 1000);
  }
  //获取转化比（分钟数跟毫秒数的比例）
  else if (value === 3) {
    format = parseFloat(60 * 1000);
  }
  //获取转化比（秒数跟毫秒数的比例）
  else if (value === 4) {
    format = parseFloat(1000);
  }
  return format;
}

export default {
  formatDeadLineDate,
};
