提交
This commit is contained in:
1 parent
4daf990fab
commit
1ca2668112
219 files changed
+29817
-20945
No files matched your search
@@ -1,9 +1,19 @@
|
||||
/**
|
||||
* 将用户粘贴的中文日期时间(如「2026年6月22日12时18分」)解析为系统标准格式。
|
||||
*/
|
||||
export type ChineseDatetimeFormat = 'date' | 'datetime' | 'datetime-minute'
|
||||
|
||||
/** 将日期时间规范为 `YYYY-MM-DD HH:mm`(去掉秒,兼容历史带秒数据) */
|
||||
export function formatDatetimeToMinute(val: string): string {
|
||||
const s = String(val || '').trim()
|
||||
if (!s) return ''
|
||||
const parsed = parseChineseDatetimeText(s, 'datetime-minute')
|
||||
return parsed || s
|
||||
}
|
||||
|
||||
export function parseChineseDatetimeText(
|
||||
text: string,
|
||||
format: 'date' | 'datetime'
|
||||
format: ChineseDatetimeFormat
|
||||
): string | null {
|
||||
const raw = text.trim()
|
||||
if (!raw) return null
|
||||
@@ -20,6 +30,9 @@ export function parseChineseDatetimeText(
|
||||
const timeParts = time.split(':')
|
||||
const hh = timeParts[0]?.padStart(2, '0') ?? '00'
|
||||
const mm = timeParts[1]?.padStart(2, '0') ?? '00'
|
||||
if (format === 'datetime-minute') {
|
||||
return `${parts[0]} ${hh}:${mm}`
|
||||
}
|
||||
const ss = timeParts[2]?.padStart(2, '0') ?? '00'
|
||||
return `${parts[0]} ${hh}:${mm}:${ss}`
|
||||
}
|
||||
@@ -38,13 +51,16 @@ export function parseChineseDatetimeText(
|
||||
|
||||
const h = String(Number(cnMatch[4] || 0)).padStart(2, '0')
|
||||
const mi = String(Number(cnMatch[5] || 0)).padStart(2, '0')
|
||||
if (format === 'datetime-minute') {
|
||||
return `${dateStr} ${h}:${mi}`
|
||||
}
|
||||
const s = String(Number(cnMatch[6] || 0)).padStart(2, '0')
|
||||
return `${dateStr} ${h}:${mi}:${s}`
|
||||
}
|
||||
|
||||
export function handleChineseDatetimePaste(
|
||||
e: ClipboardEvent,
|
||||
format: 'date' | 'datetime',
|
||||
format: ChineseDatetimeFormat,
|
||||
setter: (val: string) => void
|
||||
) {
|
||||
const text = e.clipboardData?.getData('text')?.trim()
|
||||
|
||||
Reference in new issue
Block a user