全新出发
This commit is contained in:
1 parent
b06c117b1e
commit
fa4edebed6
463 files changed
+181610
-125
No files matched your search
@@ -0,0 +1,70 @@
|
||||
export function normalizeTimestampSeconds(value: unknown): number {
|
||||
const raw = Number(value)
|
||||
if (!Number.isFinite(raw) || raw <= 0) return 0
|
||||
let normalized = Math.floor(raw)
|
||||
// 兼容毫秒/微秒/纳秒时间戳输入,统一降到秒级。
|
||||
while (normalized > 10000000000) {
|
||||
normalized = Math.floor(normalized / 1000)
|
||||
}
|
||||
return normalized
|
||||
}
|
||||
|
||||
export function formatTimestamp(timestamp: number): string {
|
||||
const date = new Date(timestamp * 1000)
|
||||
const year = date.getFullYear()
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0')
|
||||
const day = String(date.getDate()).padStart(2, '0')
|
||||
const hours = String(date.getHours()).padStart(2, '0')
|
||||
const minutes = String(date.getMinutes()).padStart(2, '0')
|
||||
const seconds = String(date.getSeconds()).padStart(2, '0')
|
||||
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
|
||||
}
|
||||
|
||||
export function formatIsoTimestamp(timestamp: number): string {
|
||||
return new Date(timestamp * 1000).toISOString()
|
||||
}
|
||||
|
||||
export function parseCompactDateTimeDigitsToSeconds(digits: string): number {
|
||||
if (digits.length < 14) return 0
|
||||
const year = parseInt(digits.substring(0, 4), 10)
|
||||
const month = parseInt(digits.substring(4, 6), 10) - 1
|
||||
const day = parseInt(digits.substring(6, 8), 10)
|
||||
const hours = parseInt(digits.substring(8, 10), 10)
|
||||
const minutes = parseInt(digits.substring(10, 12), 10)
|
||||
const seconds = parseInt(digits.substring(12, 14), 10)
|
||||
const date = new Date(year, month, day, hours, minutes, seconds)
|
||||
if (isNaN(date.getTime())) return 0
|
||||
return Math.floor(date.getTime() / 1000)
|
||||
}
|
||||
|
||||
export function parseDateTimeTextToSeconds(text: string): number {
|
||||
if (!text) return 0
|
||||
const digits = text.replace(/\D/g, '')
|
||||
return parseCompactDateTimeDigitsToSeconds(digits)
|
||||
}
|
||||
|
||||
export function normalizeExportDateRange(dateRange?: { start: number; end: number } | null): { start: number; end: number } | null {
|
||||
if (!dateRange) return null
|
||||
let start = normalizeTimestampSeconds(dateRange.start)
|
||||
let end = normalizeTimestampSeconds(dateRange.end)
|
||||
if (start > 0 && end > 0 && start > end) {
|
||||
const tmp = start
|
||||
start = end
|
||||
end = tmp
|
||||
}
|
||||
if (start <= 0 && end <= 0) return null
|
||||
return { start, end }
|
||||
}
|
||||
|
||||
export function normalizeRowTimestampSeconds(value: unknown): number {
|
||||
return normalizeTimestampSeconds(value)
|
||||
}
|
||||
|
||||
export function getTimestampSecondsFromRow(row: any): number {
|
||||
if (!row) return 0
|
||||
const raw = row.create_time ?? row.createTime ?? row.CreateTime ?? row.msgCreateTime ?? row.msg_create_time ?? row.timestamp ?? row.Timestamp
|
||||
if (raw !== undefined && raw !== null) {
|
||||
return normalizeTimestampSeconds(raw)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
Reference in new issue
Block a user