format.ts 3.08 KB

/**
 * @description 手机号格式化显示 123****5678
 * @param {String|Number} num
 * @returns {String}
 */
export function formatPhoneNo(num): string {
    return num.toString().replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
}

/**
 * 格式化Email为 h****@b2bwings.com 的格式
 * @param {*} str
 */
export function formatEmail(str): string {
    if (!str)
        return ''

    const i = str.indexOf('@')
    if (i <= 0)
        return ''

    const start = str.substring(0, 1)
    const end = str.substring(i)
    return `${start}****${end}`
}

/**
 * @description 数字千分位
 * @param {number|string} num
 * @author sheng
 * @date 2020/04/26
 */
export function thousandBitSeparator(num): string {
    return num && (num.toString().indexOf('.') !== -1
        ? num.toString().replace(/(\d)(?=(\d{3})+\.)/g, function ($0, $1) { return $1 + ","}) :
        num.toString().replace(/(\d)(?=(\d{3})+$)/g, function ($0, $1) { return $1 + "," }))
}

/**
 * 获取该日开始时间 零时零分零秒
 * @param {number} stmp 毫秒时间戳
 * @returns {number} 毫秒时间戳
 */
export function getDateStartTime(stmp): number {
    return new Date(new Date(Number(stmp)).toLocaleDateString()).getTime()
}

/**
 * 获取该日结束时间 23时59分59秒
 * @param {date} date 毫秒时间戳
 * @returns {number} 毫秒时间戳
 */
export function getDateEndTime(stmp): Date {
    return new Date(
        new Date(new Date(Number(stmp)).toLocaleDateString()).getTime() +
        24 * 60 * 60 * 1000 -
        1
    )
}

/**
 * 日期格式化
 * @param {*} fmt
 * @param {*} time 毫秒时间戳
 */
export function dateFormat(fmt, time): string {
    let ret
    const newDate = new Date()  // 实例化一个Date对象
    newDate.setTime(time)
    const opt = {
        "Y+": newDate.getFullYear().toString(),        // 年
        "M+": (newDate.getMonth() + 1).toString(),     // 月
        "D+": newDate.getDate().toString(),            // 日
        "h+": newDate.getHours().toString(),           // 时
        "m+": newDate.getMinutes().toString(),         // 分
        "s+": newDate.getSeconds().toString()          // 秒
    }
    for (const k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt)
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length === 1) ?
                (opt[k]) :
                (opt[k].padStart(ret[1].length, "0")))
        }
    }
    return fmt
}

/**
 * 请求参数格式化为字符串
 * @param {Object} query
 * @author sheng
 * @date 2020/06/23
 */
export function formatQuery(query): string {
    if (typeof query !== 'object') return ''

    const params = []
    if (query) {
        for (const item in query) {
            const vals = query[item]
            if (vals !== undefined) params.push(item + '=' + query[item])

        }
    }
    return params.length ? '?' + params.join('&') : ''
}

/** minutes */
export function getRemainTime(minutes): string {
    /** 剩余小时 */
    const hour = Math.floor(minutes / 60)
    /** 剩余分钟 */
    const min = Math.round(minutes % 60)
    return hour <= 0 ? `${min}分钟` : `${hour}小时${min}分钟`
}