first commit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
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'
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user