import React, { useMemo } from 'react'; import { Typography, Box, Fade, Stack, alpha } from '@mui/material'; import dayjs from '@/utils/dayjs'; import CopyButton from '@/components/CopyButton'; import { DATE_FORMAT, timestampPageStyles } from '@/config/pageTheme'; import type { UnitType } from '@/config/pageTheme'; interface ResultViewProps { result: string; mode: 'ts2dt' | 'dt2ts'; unit: UnitType; zone: string; showMessage?: (message: string, options?: { severity: 'success' | 'error' }) => void; } const ResultView = React.memo(({ result, mode, unit, zone, showMessage }: ResultViewProps) => { const extraInfo = useMemo(() => { if (!result) return null; const d = mode === 'ts2dt' ? dayjs(result, DATE_FORMAT).tz(zone) : unit === 'ms' ? dayjs(Number(result)) : dayjs.unix(Number(result)); return { relative: d.fromNow(), iso: d.toISOString(), utc: d.utc().format(DATE_FORMAT) + ' UTC', }; }, [result, mode, zone, unit]); if (!result) return null; return ( 转换结果 {result} {[ { label: '相对时间', value: extraInfo?.relative }, { label: 'ISO 8601', value: extraInfo?.iso }, { label: 'UTC 时间', value: extraInfo?.utc }, ].map((item) => ( {item.label} {item.value} {item.value && ( )} ))} ); }); ResultView.displayName = 'ResultView'; export default ResultView;