vue 封装时间格式化和number精确度

//format.js 公用js
/**
 * Parse the time to string
 * @param {(Object|string|number)} time
 * @param {string} format
 * @returns {string | null}
 */
//时间格式化 
export function formatDate(time,format) {
    if (!time) return "";
    var date=new Date(time);
    var year=date.getFullYear();
    /* 在日期格式中,月份是从0开始的,因此要加0
     * 使用三元表达式在小于10的前面加0,以达到格式统一  如 09:11:05
     * */
    var month= date.getMonth()+1<10 ? "0"+(date.getMonth()+1) : date.getMonth()+1;
    var day=date.getDate()<10 ? "0"+date.getDate() : date.getDate();
    var hours=date.getHours()<10 ? "0"+date.getHours() : date.getHours();
    var minutes=date.getMinutes()<10 ? "0"+date.getMinutes() : date.getMinutes();
    var seconds=date.getSeconds()<10 ? "0"+date.getSeconds() : date.getSeconds();
    // 拼接
    // return year+"-"+month+"-"+day+" "+hours+":"+minutes+":"+seconds;
    
    let result = ''
    switch (format) {
      case 'YYYY':
        result = year
        break
      case 'MM':
        result = month
        break
      case 'DD':
        result = day
        break
      case 'HH':
        result = hours
        break
      case 'mm':
        result = minutes
        break
      case 'ss':
        result = seconds
        break
      case 'HH:mm':
        result = `${hours}:${minutes}`
        break
      case 'HH:mm:ss':
        result = `${hours}:${minutes}:${seconds}`
        break
      case 'YYYY-MM':
        result = `${year}-${month}`
        break
      case 'YYYY-MM-DD':
        result = `${year}-${month}-${day}`
        break
      case 'YYYY/MM/DD':
        result = `${year}/${month}/${day}`
        break
      case 'YYYY-MM-DD HH:mm':
        result =  `${year}-${month}-${day} ${hours}:${minutes}`
        break
      case 'YYYY-MM-DD HH:mm:ss':
        result =  `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
        break
      case 'YYYY-MM-DD 00:00:00':
        result = `${year}-${month}-${day} 00:00:00`
        break
      case 'YYYY/MM/DD':
        result = `${year}/${month}/${day}`
        break
      case 'YYYY/MM/DD HH:mm':
        result = `${year}/${month}/${day} ${hours}:${minutes}`
        break

    }
    return result;
  }

  /**
 * Parse the time to string
 * @param {(Object|string|number)} value
 * @param {string} format
 * @returns {string | null}
 */
//时间戳转化
  export function timestamp(value,format){
    if (!value) return "";
    const time = new Date(value * 1000);
    const Y = time.getFullYear()
    const M = (time.getMonth() + 1).toString().padStart(2, '0')
    const D = time.getDate().toString().padStart(2, '0')
    const h = time.getHours().toString().padStart(2, '0')
    const m = time.getMinutes().toString().padStart(2, '0')
    const s = time.getSeconds().toString().padStart(2, '0')
    // return `${Y}-${M}-${D} ${h}:${m}:${s}`
    let result = ''
    switch (format) {
      case 'YYYY':
        result = Y
        break
      case 'MM':
        result = M
        break
      case 'DD':
        result = D
        break
      case 'HH':
        result = h
        break
      case 'mm':
        result = m
        break
      case 'ss':
        result = s
        break
      case 'HH:mm':
        result = `${h}:${m}`
        break
      case 'HH:mm:ss':
        result = `${h}:${m}:${s}`
        break
      case 'YYYY-MM':
        result = `${Y}-${M}`
        break
      case 'YYYY-MM-DD':
        result = `${Y}-${M}-${D}`
        break
      case 'YYYY/MM/DD':
        result = `${Y}/${M}/${D}`
        break
      case 'YYYY-MM-DD HH:mm':
        result =  `${Y}-${M}-${D} ${h}:${m}`
        break
      case 'YYYY-MM-DD HH:mm:ss':
        result =  `${Y}-${M}-${D} ${h}:${m}:${s}`
        break
      case 'YYYY-MM-DD 00:00:00':
        result = `${Y}-${M}-${D} 00:00:00`
        break
      case 'YYYY/MM/DD':
        result = `${Y}/${M}/${D}`
        break
      case 'YYYY/MM/DD HH:mm':
        result = `${Y}/${M}/${D} ${h}:${m}`
        break
    }
    return result;
  }

  /**
 * Parse the time to string
 * @param {(Object|string|number)} val
 * @param {string} digit
 * @returns {string | null}
 */
//数字类型
// 判断是否为数值  true 数值类型 false 其他
export function formatNum(val, digit,type) {
  // 异常值判断
  if (val === null || isNaN(val) || val === undefined || val === '' || val === ' ') return '' 
  // 数值 或 字符串数值
  val = parseFloat(val).toFixed(digit)
 
  // 删除尾部的‘0’
  // if (val.endsWith('0')) {
  //   val = val.substring(0, val.lastIndexOf('0'))
  // }
 
  // 删除尾部的‘.’
  if (val.endsWith('.')) {
    val = val.substring(0, val.lastIndexOf('.'))
  }
  // if(type==='money'){ //格式为金额形式的
  //     var intPart = Number(val).toFixed(0); //获取整数部分
  //     var intPartFormat = intPart
  //       .toString()
  //       .replace(/(\d)(?=(?:\d{3})+$)/g, "$1,"); //将整数部分逢三一断
  //     var floatPart = ".00"; //预定义小数部分
  //     var value2Array = val.split(".");
  //     //=2表示数据有小数位
  //     if (value2Array.length == 2) {
  //       floatPart = value2Array[1].toString(); //拿到小数部分
  //       console.log('-intPartFormat--',intPartFormat + "." + floatPart + "0")
  //       if (floatPart.length == 1) {
  //         //补0,
  //         val=intPartFormat + "." + floatPart + "0";
  //       } else {
  //         val= intPartFormat + "." + floatPart;
  //       }
  //     } else {
  //       console.log('-intPartFormat + floatPart--',intPartFormat + floatPart)
  //       val=intPartFormat + floatPart;
  //     }
  // }
  return val
}
//引用 vue文件
 formatDateHandle(value, item) {
//value 参数值  item配置文件时间格式{dateFormat: 'YYYY-MM-DD HH:mm:ss'}
    if (!value) return '';
    this.accountDetails[item.field] = formatDate(value, item.dateFormat);
    return this.accountDetails[item.field];
  },
  formatNumHandle(value, item) {
//value 参数值  item配置文件时间格式 pattern小数点精确度{numeric{type: 'money',pattern: '2'}}
    if (!value) return '';
    this.accountDetails[item.field] = formatNum(value, item.numeric.pattern, item.numeric.type);
    return this.accountDetails[item.field];
 }

 

posted @ 2022-02-25 17:56  陪伴者  阅读(366)  评论(0编辑  收藏  举报