translatedFormat($format); } } if (! function_exists('formatTime')) { function formatTime(?string $time = null, ?string $format = 'H:i') { return ! $time ? '-' : Carbon::parse($time)->format($format); } } if (! function_exists('formatDateTime')) { function formatDateTime(string $dateTime) { return Carbon::parse($dateTime)->translatedFormat('l, d M Y H:i:s'); } } if (! function_exists('formatDateDash')) { function formatDateDash(string $date) { return Carbon::parse($date)->translatedFormat('Y-m-d'); } } if (! function_exists('getAge')) { function getAge(string $birthdate) { $birth = Carbon::parse($birthdate); $now = Carbon::now(); $diff = $birth->diff($now); return "{$diff->y} tahun {$diff->m} bulan"; } } if (! function_exists('timeAgo')) { function timeAgo(?string $date = null) { return ! $date ? '-' : Carbon::parse($date)->diffForHumans(); } } if (! function_exists('normalizeOpeningHours')) { function normalizeOpeningHours(array $openingHours) { $days = ['senin', 'selasa', 'rabu', 'kamis', 'jumat', 'sabtu', 'minggu']; return collect($days) ->mapWithKeys(fn ($day) => [ $day => $openingHours[$day] ?? ['open' => null, 'close' => null], ]) ->toArray(); } }