import React, { useState, useEffect } from 'react'; import { useTranslation } from '../i18n'; interface ClockProps { showSeconds?: boolean; use24HourFormat?: boolean; } const Clock: React.FC = ({ showSeconds = true, use24HourFormat = true }) => { 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'); return (
{/* Hours */} {hoursStr} {/* Separator */} : {/* Minutes */} {minutesStr} {/* Seconds (Optional small display) */} {showSeconds && ( {secondsStr} )} {/* AM/PM Indicator */} {!use24HourFormat && ( {ampm} )}
{/* Date Display */}
{time.toLocaleDateString(language === 'zh' ? 'zh-CN' : 'en-US', { weekday: 'long', month: 'long', day: 'numeric' })}
); }; export default Clock;