66 lines
1.8 KiB
JavaScript
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
|
|
}
|