c4262bd704
新增 version-format.ts:字节数与后端时间显示归一。 TDD: task-137.test.ts 8 用例 RED→GREEN。
25 lines
958 B
TypeScript
25 lines
958 B
TypeScript
/** 版本页时间与文件格式化(任务 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 : ''
|
|
}
|