/*
 * @Descripttion: HJ
 * @Company: 思宏科技
 * @version: v1.0
 * @Author: HJ
 * @Date: 2021-06-15 18:12:55
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2022-03-18 14:09:04
 */
export function parseTime(time, cFormat) {
  if (arguments.length === 0 || !time) {
    return null
  }
  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'object') {
    date = time
  } else {
    if (typeof time === 'string') {
      if (/^[0-9]+$/.test(time)) {
        // support "1548221490638"
        time = parseInt(time)
      } else {
        // support safari
        // https://stackoverflow.com/questions/4310953/invalid-date-in-safari
        time = time.replace(new RegExp(/-/gm), '/')
      }
    }

    if (typeof time === 'number' && time.toString().length === 10) {
      time = time * 1000
    }
    date = new Date(time)
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
  const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
    const value = formatObj[key]
    // Note: getDay() returns 0 on Sunday
    if (key === 'a') {
      return ['日', '一', '二', '三', '四', '五', '六'][value]
    }
    return value.toString().padStart(2, '0')
  })
  return time_str
}

/**
 * 计算两个时间相差多少分钟
 * @param {*} begin 开始时间
 * @param {*} end 结束时间
 * @returns  返回的相差分钟数
 */
export function minutesCha( begin, end ) {
  //定义两个变量time1,time2分别保存开始和结束时间
  var time1 = begin || "2009-12-02T12:25:10.592Z";
  var time2 = end || "2009-12-02T12:35:20.589Z";
  console.log(time1,time2)
  //判断开始时间是否大于结束日期
  if (time1 > time2) {
      console.log("开始时间不能大于结束时间！");
      return false;
  }

  //截取字符串，得到日期部分"2009-12-02",用split把字符串分隔成数组
  var begin1 = time1.substr(0, 10).split("-");
  var end1 = time2.substr(0, 10).split("-");

  //将拆分的数组重新组合，并实例成化新的日期对象
  var date1 = new Date(begin1[1] + - + begin1[2] + - + begin1[0]);
  var date2 = new Date(end1[1] + - + end1[2] + - + end1[0]);

  //得到两个日期之间的差值m，以分钟为单位
  //Math.abs(date2-date1)计算出以毫秒为单位的差值
  //Math.abs(date2-date1)/1000得到以秒为单位的差值
  //Math.abs(date2-date1)/1000/60得到以分钟为单位的差值
  var m = parseInt(Math.abs(date2 - date1) / 1000 / 60);

  //小时数和分钟数相加得到总的分钟数
  //time1.substr(11,2)截取字符串得到时间的小时数
  //parseInt(time1.substr(11,2))*60把小时数转化成为分钟
  var min1 = parseInt(time1.substr(11, 2)) * 60 + parseInt(time1.substr(14, 2));
  var min2 = parseInt(time2.substr(11, 2)) * 60 + parseInt(time2.substr(14, 2));

  //两个分钟数相减得到时间部分的差值，以分钟为单位
  var n = min2 - min1;

  //将日期和时间两个部分计算出来的差值相加，即得到两个时间相减后的分钟数
  var minutes = m + n;
  // 返回 分钟差
  return minutes;
}
module.exports = {
  parseTime: parseTime,
  minutesCha: minutesCha
}