import React, { useState, useEffect } from 'react'; import { useTranslation } from '../i18n'; interface ClockProps { showSeconds?: boolean; use24HourFormat?: boolean; motto?: string; } const Clock: React.FC = ({ showSeconds = true, use24HourFormat = true, motto = '同是天涯沦落人,相逢何必曾相识' }) => { const [time, setTime] = useState(new Date()); const { language } = useTranslation(); useEffect(() => { const timer = setInterval(() => { setTime(new Date()); }, 1000); return () => clearInterval(timer); }, []); const rawHours = time.getHours(); const rawMinutes = time.getMinutes(); const rawSeconds = time.getSeconds(); let displayHours = rawHours; let ampm = ''; if (!use24HourFormat) { displayHours = rawHours % 12 || 12; // Convert 0 to 12 ampm = rawHours >= 12 ? 'PM' : 'AM'; } const hoursStr = displayHours.toString().padStart(2, '0'); const minutesStr = rawMinutes.toString().padStart(2, '0'); const secondsStr = rawSeconds.toString().padStart(2, '0'); const weekday = time.toLocaleDateString('en-US', { weekday: 'short' }).toUpperCase(); const month = (time.getMonth() + 1).toString().padStart(2, '0'); const day = time.getDate().toString().padStart(2, '0'); const datePart = `${month}/${day}`; return (
{/* Short Date (Left side, stacked) */}
{weekday} {datePart}
{/* Hours */} {hoursStr} {/* Separator */} : {/* Minutes */} {minutesStr} {/* Seconds (Optional small display) */} {showSeconds && ( {secondsStr} )} {/* AM/PM Indicator */} {!use24HourFormat && ( {ampm} )}
{/* Motto */}
{motto}
); }; export default Clock;