42 lines
1.0 KiB
TypeScript
42 lines
1.0 KiB
TypeScript
function normalizeDurationSeconds(value: unknown) {
|
|
const totalSeconds = Number(value ?? 0)
|
|
if (!Number.isFinite(totalSeconds) || totalSeconds <= 0) {
|
|
return 0
|
|
}
|
|
|
|
return Math.floor(totalSeconds)
|
|
}
|
|
|
|
export function formatWorkTime(value: unknown) {
|
|
const normalizedSeconds = normalizeDurationSeconds(value)
|
|
if (!normalizedSeconds) {
|
|
return "00:00:00"
|
|
}
|
|
|
|
const hours = Math.floor(normalizedSeconds / 3600)
|
|
const minutes = Math.floor((normalizedSeconds % 3600) / 60)
|
|
const seconds = normalizedSeconds % 60
|
|
|
|
return [hours, minutes, seconds]
|
|
.map((part) => String(part).padStart(2, "0"))
|
|
.join(":")
|
|
}
|
|
|
|
export function formatWorkTimeHoursMinutes(value: unknown) {
|
|
const normalizedSeconds = normalizeDurationSeconds(value)
|
|
if (!normalizedSeconds) {
|
|
return "-"
|
|
}
|
|
|
|
const hours = Math.floor(normalizedSeconds / 3600)
|
|
const minutes = Math.floor((normalizedSeconds % 3600) / 60)
|
|
|
|
if (hours > 0) {
|
|
return `${hours}小时${minutes}分钟`
|
|
}
|
|
if (minutes > 0) {
|
|
return `${minutes}分钟`
|
|
}
|
|
return "-"
|
|
}
|