task-137(记录与版本中心): 实现版本页面统一时间和文件格式化
新增 version-format.ts:字节数与后端时间显示归一。 TDD: task-137.test.ts 8 用例 RED→GREEN。
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
/** 版本页时间与文件格式化(任务 137):字节数/时间显示归一;纯逻辑。 */
|
||||
|
||||
/** 字节数 → 可读文本(B/KB/MB/GB,保留 1 位)。 */
|
||||
export function formatFileSize(value: number): string {
|
||||
const bytes = typeof value === 'number' && Number.isFinite(value) ? Math.max(value, 0) : 0
|
||||
if (bytes < 1024) return `${bytes} B`
|
||||
const units = ['KB', 'MB', 'GB']
|
||||
let amount = bytes
|
||||
let unit = 'B'
|
||||
for (const next of units) {
|
||||
amount /= 1024
|
||||
unit = next
|
||||
if (amount < 1024 || next === 'GB') break
|
||||
}
|
||||
return `${amount.toFixed(1)} ${unit}`
|
||||
}
|
||||
|
||||
const DISPLAY_DATETIME = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}(:\d{2}(\.\d+)?)?$/
|
||||
|
||||
/** 后端时间(ISO T 或空格分隔) → 显示文本(yyyy-MM-dd HH:mm:ss);非法回空。 */
|
||||
export function formatDisplayDateTime(value: unknown): string {
|
||||
const text = typeof value === 'string' ? value.trim().replace('T', ' ') : ''
|
||||
return DISPLAY_DATETIME.test(text) ? text : ''
|
||||
}
|
||||
Reference in New Issue
Block a user