import { useState, useCallback } from 'react' function timestampToDate(ts: number): string { const d = new Date(ts * 1000) return d.toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' }) } function dateToTimestamp(dateStr: string): number { return Math.floor(new Date(dateStr).getTime() / 1000) } export default function TimestampTool() { const [timestamp, setTimestamp] = useState('') const [dateStr, setDateStr] = useState('') const [tsResult, setTsResult] = useState('') const [dateResult, setDateResult] = useState('') const [now, setNow] = useState(Math.floor(Date.now() / 1000)) const handleTsToDate = useCallback(() => { const ts = parseInt(timestamp, 10) if (isNaN(ts)) { setTsResult('请输入有效的时间戳') return } setTsResult(timestampToDate(ts)) }, [timestamp]) const handleDateToTs = useCallback(() => { if (!dateStr) { setDateResult('请选择日期时间') return } const ts = dateToTimestamp(dateStr) setDateResult(String(ts)) }, [dateStr]) const refreshNow = useCallback(() => { const n = Math.floor(Date.now() / 1000) setNow(n) }, []) const copyToTsInput = useCallback(() => { setTimestamp(String(now)) }, [now]) return (
当前时间戳
{now} {timestampToDate(now)}
setTimestamp(e.target.value)} placeholder="输入时间戳(秒)" />
{tsResult &&

{tsResult}

}
setDateStr(e.target.value)} />
{dateResult &&

{dateResult}

}
) }