mi-assessment/uniapp/utils/format.js
2026-02-09 14:45:06 +08:00

66 lines
1.8 KiB
JavaScript

/**
* 格式化工具模块
*/
/**
* 格式化时间戳
* - "今天 HH:mm" if same day
* - "昨天" if 1 day ago
* - "前天" if 2 days ago
* - "M月D号" if more than 2 days ago
*/
export function formatTimestamp(timestamp, now = new Date()) {
if (!timestamp) return ''
const date = new Date(timestamp)
if (isNaN(date.getTime())) return ''
const todayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate())
const yesterdayStart = new Date(todayStart.getTime() - 24 * 60 * 60 * 1000)
const dayBeforeYesterdayStart = new Date(todayStart.getTime() - 2 * 24 * 60 * 60 * 1000)
const dateStart = new Date(date.getFullYear(), date.getMonth(), date.getDate())
if (dateStart.getTime() === todayStart.getTime()) {
const hours = String(date.getHours()).padStart(2, '0')
const minutes = String(date.getMinutes()).padStart(2, '0')
return `今天 ${hours}:${minutes}`
} else if (dateStart.getTime() === yesterdayStart.getTime()) {
return '昨天'
} else if (dateStart.getTime() === dayBeforeYesterdayStart.getTime()) {
return '前天'
} else {
const month = date.getMonth() + 1
const day = date.getDate()
return `${month}${day}`
}
}
/**
* 脱敏姓名
*/
export function maskName(name) {
if (!name || name.length === 0) return ''
if (name.length === 1) return name
if (name.length === 2) return name[0] + '*'
const first = name[0]
const last = name[name.length - 1]
const middle = '*'.repeat(name.length - 2)
return first + middle + last
}
/**
* 脱敏手机号
*/
export function maskPhone(phone) {
if (!phone || phone.length < 7) return phone || ''
return phone.substring(0, 3) + '****' + phone.substring(phone.length - 4)
}
export default {
formatTimestamp,
maskName,
maskPhone
}