gwy-exam/client/src/utils/format.ts

39 lines
1.2 KiB
TypeScript

/**
* 前端格式化工具:数字、百分比、日期、时长。
* 业务代码统一走这里,避免散落重复的格式化逻辑。
*/
export const formatPercent = (value: number) => `${Math.round(value)}%`
/** 秒 → 「X 分 Y 秒」或「Y 秒」 */
export function formatDuration(seconds: number): string {
const s = Math.max(0, Math.round(seconds))
if (s < 60) return `${s}`
const m = Math.floor(s / 60)
const rest = s % 60
return rest === 0 ? `${m} 分钟` : `${m}${rest}`
}
/** YYYY-MM-DD → 「M月D日」 */
export function formatDateShort(iso: string): string {
const [, m, d] = iso.split('-')
return `${Number(m)}${Number(d)}`
}
/** 分钟 → 「1小时25分」/「45分」/「0分」 */
export function formatMinutes(mins: number): string {
const m = Math.max(0, Math.round(mins))
if (m < 60) return `${m}`
const h = Math.floor(m / 60)
const rest = m % 60
return rest === 0 ? `${h}小时` : `${h}小时${rest}`
}
/** 按当天时段返回问候语(早上好 / 下午好 / 晚上好) */
export function greetingByHour(hour = new Date().getHours()): string {
if (hour < 6) return '夜深了'
if (hour < 12) return '早上好'
if (hour < 18) return '下午好'
return '晚上好'
}