export function formatDate( date: Date | string | number | null | undefined, option: | 'full' | 'long' | 'medium' | 'short' | 'numeric' | 'yearMonth' | 'dayMonth' | 'time' | Intl.DateTimeFormatOptions, ): string { if (!date) { return 'Tidak ada data tanggal' } const listOptions: { [key: string]: Intl.DateTimeFormatOptions } = { full: { day: 'numeric', month: 'long', year: 'numeric' }, long: { day: 'numeric', month: 'long', year: 'numeric' }, // Mirip 'full' tapi bisa disesuaikan medium: { day: 'numeric', month: 'short', year: 'numeric' }, short: { day: '2-digit', month: '2-digit', year: '2-digit' }, numeric: { day: 'numeric', month: 'numeric', year: 'numeric' }, yearMonth: { month: 'long', year: 'numeric' }, dayMonth: { day: 'numeric', month: 'long' }, time: { hour: 'numeric', minute: 'numeric', second: 'numeric' }, } let options: Intl.DateTimeFormatOptions | undefined if (typeof option === 'string' && listOptions[option]) { options = listOptions[option] } else if (typeof option === 'object' && option !== null) { options = option // Menggunakan opsi yang diberikan langsung } else { console.warn( `Opsi format tanggal "${option}" tidak valid. Menggunakan format 'full' sebagai default.`, ) options = listOptions.full } try { const dateObject = new Date(date) return dateObject.toLocaleDateString('id-ID', options) } catch (error) { console.error('Gagal memformat tanggal:', error) return 'Format tanggal tidak valid' } }