const dateUtil = {
  // 日期标准格式
  DATE_yyyy_MM_dd() {
    return 'yyyy-MM-dd';
  },
  DATE_yyyy_MM_dd_TIME() {
    return 'yyyy-MM-dd HH:mm:ss';
  },
  DATE_full() {
    return 'yyyy-MM-dd hh:mm:ss';
  },
  DATE_yyyyMMdd() {
    return 'yyyyMMdd';
  },
  DATE_yyyyMMdd_china() {
    return 'yyyy年MM月dd日';
  },
  DATE_yyyyMMddTIME() {
    return 'yyyyMMddhhmmss';
  },
  DATE_yyyy_MM_dd_diagonal() {
    return 'yyyy/MM/dd';
  },
  // 日期格式化
  formateDate(newdate, format) {
    const date = {
      'M+': newdate.getMonth() + 1,
      'd+': newdate.getDate(),
      'h+': newdate.getHours(),
      'm+': newdate.getMinutes(),
      's+': newdate.getSeconds(),
      'q+': Math.floor((newdate.getMonth() + 3) / 3),
      'S+': newdate.getMilliseconds()
    };
    if (/(y+)/i.test(format)) {
      format = format.replace(RegExp.$1, (newdate.getFullYear() + '').substr(4 - RegExp.$1.length));
    }
    for (const k in date) {
      if (new RegExp('(' + k + ')').test(format)) {
        format = format.replace(RegExp.$1, RegExp.$1.length === 1
          ? date[k] : ('00' + date[k]).substr(('' + date[k]).length));
      }
    }
    return format;
  },
  formatDate(dateString) {
    const year = dateString.slice(0, 4);
    const month = dateString.slice(4, 6);
    const day = dateString.slice(6, 8);
    return `${year}-${month}-${day}`;
  },
  // 根据时区转换时间
  timeZoneDate(currentDate) {
    // 获取设备的时区偏移量（分钟）
    const deviceTimezoneOffset = new Date().getTimezoneOffset();
    // 获取北京时间的时区偏移量（分钟）
    const beijingTimezoneOffset = -480; // -480分钟为北京时区偏移量
    // 计算设备时区与北京时区的偏移量差
    const offsetDifference = deviceTimezoneOffset - beijingTimezoneOffset;
    // 将设备的时区偏移量转换为毫秒数
    const offsetMilliseconds = offsetDifference * 60 * 1000;
    // 将北京时间的毫秒数加上设备的时区偏移量的毫秒数（仅对非北京时间进行调整）
    const adjustedMilliseconds = offsetMilliseconds !== 0 ? currentDate.getTime() + offsetMilliseconds : currentDate.getTime();
    // 使用调整后的时间创建一个新的Date对象
    const adjustedDate = new Date(adjustedMilliseconds);
    // 格式化调整后的时间
    const formattedDate = dateUtil.formateDate(adjustedDate, 'yyyy/MM/dd hh:mm:ss');
    return formattedDate;
  },
  // isSameWeek(old,now){
  //   var oneDayTime = 1000*60*60*24;  
  //   var old_count =parseInt(old.getTime()/oneDayTime);  
  //   var now_other =parseInt(now.getTime()/oneDayTime);  
  //   return parseInt((old_count+4)/7) == parseInt((now_other+4)/7);  
  // }

  // 获取本周第一天
  getFirstDayOfWeek(date = new Date()) {
    let firstDay = new Date(dateUtil.formateDate(date, "yyyy-MM-dd")); // 当前日期的 0 点
    let weekDay = firstDay.getDay(); // 星期几（0-6，0 表示星期天）
    let diff = weekDay === 0 ? 6 : weekDay - 1; // 本周第一天的偏移量
    firstDay.setDate(firstDay.getDate() - diff);
    return firstDay;
  },
  // 判断两个日期是否在同一周
  isSameWeek(date1, date2) {
    const startOfWeek = (date) => {
      const diff = date.getDay() - 1;
      return new Date(date.getFullYear(), date.getMonth(), date.getDate() - diff);
    };
    const start1 = startOfWeek(date1);
    const start2 = startOfWeek(date2);
    return start1.getTime() === start2.getTime();
  },
}

export default dateUtil;
