2025-08-07 14:31:42 +07:00
|
|
|
export const formatCurrency = (amount: number) => {
|
|
|
|
|
return new Intl.NumberFormat('id-ID', {
|
|
|
|
|
style: 'currency',
|
|
|
|
|
currency: 'IDR',
|
|
|
|
|
minimumFractionDigits: 0
|
|
|
|
|
}).format(amount)
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-08 17:59:39 +07:00
|
|
|
export const formatShortCurrency = (num: number): string => {
|
2025-08-11 13:48:24 +07:00
|
|
|
const formatNumber = (value: number, suffix: string) => {
|
|
|
|
|
const str = value.toFixed(2).replace(/\.00$/, '')
|
|
|
|
|
return str + suffix
|
2025-08-08 17:59:39 +07:00
|
|
|
}
|
2025-08-11 13:48:24 +07:00
|
|
|
|
|
|
|
|
const absNum = Math.abs(num)
|
|
|
|
|
let result: string
|
|
|
|
|
|
|
|
|
|
if (absNum >= 1_000_000) {
|
|
|
|
|
result = formatNumber(absNum / 1_000_000, 'M')
|
|
|
|
|
} else if (absNum >= 1_000) {
|
|
|
|
|
result = formatNumber(absNum / 1_000, 'k')
|
|
|
|
|
} else {
|
|
|
|
|
result = absNum.toString()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return num < 0 ? '-' + 'Rp ' + result : 'Rp ' + result
|
2025-08-08 17:59:39 +07:00
|
|
|
}
|
|
|
|
|
|
2025-08-10 22:56:04 +07:00
|
|
|
export const formatDate = (dateString: any) => {
|
|
|
|
|
return new Date(dateString).toLocaleDateString('id-ID', {
|
2025-08-07 14:31:42 +07:00
|
|
|
day: 'numeric',
|
2025-08-10 22:56:04 +07:00
|
|
|
month: 'short',
|
|
|
|
|
year: 'numeric'
|
2025-08-07 14:31:42 +07:00
|
|
|
})
|
|
|
|
|
}
|
2025-08-07 23:48:31 +07:00
|
|
|
|
|
|
|
|
export const formatDateDDMMYYYY = (date: Date) => {
|
2025-08-08 17:59:39 +07:00
|
|
|
const day = String(date.getDate()).padStart(2, '0')
|
|
|
|
|
const month = String(date.getMonth() + 1).padStart(2, '0')
|
|
|
|
|
const year = date.getFullYear()
|
|
|
|
|
return `${day}-${month}-${year}`
|
|
|
|
|
}
|