/* =========================================================== 📦 src/utils/formatters.js Tarih, para, sayı, yüzde formatlama yardımcıları =========================================================== */ /** * 📅 formatDateInput(value) * SQL veya ISO datetime'i "yyyy-MM-dd" formatına çevirir. * için uygundur. * Örnek: "2025-11-07 00:00:00" → "2025-11-07" */ export function formatDateInput(value) { if (!value) return '' try { if (typeof value === 'string') { // "2025-11-07 00:00:00" → "2025-11-07" if (value.includes(' ')) return value.split(' ')[0] // "2025-11-07T00:00:00Z" → "2025-11-07" if (value.includes('T')) return value.split('T')[0] // zaten yyyy-MM-dd ise aynen dön if (/^\d{4}-\d{2}-\d{2}$/.test(value)) return value } if (value instanceof Date) { return value.toISOString().split('T')[0] } return '' } catch { return '' } } /** * 📅 formatDateDisplay(value) * "2025-10-31" veya "2025-10-31 00:00:00" → "31.10.2025" * Sadece ekranda gösterim için. */ export function formatDateDisplay(value) { if (!value) return '' try { const d = new Date(value) if (isNaN(d)) return '' const dd = String(d.getDate()).padStart(2, '0') const mm = String(d.getMonth() + 1).padStart(2, '0') const yyyy = d.getFullYear() return `${dd}.${mm}.${yyyy}` } catch { return '' } } /** * 💰 formatMoney(value, currency) * Sayıyı belirtilen para birimiyle biçimlendirir. * Varsayılan: TRY * Örnek: formatMoney(12500, 'USD') */ export function formatMoney(value, currency = 'TRY') { const n = Number(value || 0) return new Intl.NumberFormat('tr-TR', { style: 'currency', currency, minimumFractionDigits: 2, maximumFractionDigits: 2, }).format(n) } /** * 🔢 formatNumber(value, fraction) * Genel sayı biçimlendirme (küsuratlı veya küsuratsız) */ export function formatNumber(value, fraction = 2) { const n = Number(value || 0) return n.toLocaleString('tr-TR', { minimumFractionDigits: fraction, maximumFractionDigits: fraction, }) } /** * 💬 formatPercent(value) * 0.1 → "%10.00" şeklinde gösterir */ export function formatPercent(value) { const n = Number(value || 0) return `${(n * 100).toFixed(2)}%` }