package com.craigvg.lichun_android.utils import java.text.SimpleDateFormat import java.util.* import kotlin.math.abs object DateFormatters { // Python datetime format: "yyyy-MM-dd HH:mm:ss.SSSSSS" val pythonDatetime: SimpleDateFormat by lazy { SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS", Locale.US) } val shortDate: SimpleDateFormat by lazy { SimpleDateFormat("M/d/yy", Locale.getDefault()) } val shortTime: SimpleDateFormat by lazy { SimpleDateFormat("h:mm a", Locale.getDefault()) } val shortDateTime: SimpleDateFormat by lazy { SimpleDateFormat("M/d/yy h:mm a", Locale.getDefault()) } val mediumDateTime: SimpleDateFormat by lazy { SimpleDateFormat("MMM d, yyyy h:mm a", Locale.getDefault()) } val gameDate: SimpleDateFormat by lazy { SimpleDateFormat("MMM dd, yyyy", Locale.US) } val gameTime: SimpleDateFormat by lazy { SimpleDateFormat("h:mm a", Locale.US) } /** * Returns a relative time string like "Just now", "5m ago", "2h ago", "Yesterday" */ fun relativeTime(date: Date): String { val now = Date() val diffMs = now.time - date.time val diffSec = diffMs / 1000 val diffMin = diffSec / 60 val diffHours = diffMin / 60 val diffDays = diffHours / 24 return when { diffSec < 60 -> "Just now" diffMin < 60 -> "${diffMin}m ago" diffHours < 24 -> "${diffHours}h ago" diffDays == 1L -> "Yesterday" diffDays < 7 -> "${diffDays}d ago" diffDays < 30 -> "${diffDays / 7}w ago" else -> shortDate.format(date) } } /** * Parse a python datetime string into a Date */ fun parsePythonDatetime(dateString: String): Date? { return try { pythonDatetime.parse(dateString) } catch (_: Exception) { null } } }