using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ModVersionChecker.utils { public class TimeUtils { public static long GetUnixTimeMillis(DateTime? dateTime) { DateTime dt = dateTime ?? DateTime.UtcNow; return (long)(dt - new DateTime(1970, 1, 1)).TotalMilliseconds; } public static DateTime FromUnixTimeMillis(long unixTimeMillis) { return new DateTime(1970, 1, 1).AddMilliseconds(unixTimeMillis); } public static string ToFriendlyTime(long millisecods) { DateTime dateTime = FromUnixTimeMillis(millisecods); return ToFriendlyTime(dateTime); } public static string ToFriendlyTime(DateTime dateTime) { // Use UTC for consistency with LiteDB if needed DateTime now = DateTime.UtcNow; TimeSpan span = now - dateTime; // Handle future dates (optional) if (span.TotalSeconds < 0) return "In the future"; if (span.TotalSeconds < 60) return $"{(int)span.TotalSeconds} seconds ago"; if (span.TotalMinutes < 60) return $"{(int)span.TotalMinutes} minute{(span.TotalMinutes < 2 ? "" : "s")} ago"; if (span.TotalHours < 24) return $"{(int)span.TotalHours} hour{(span.TotalHours < 2 ? "" : "s")} ago"; if (span.TotalDays < 30) return $"{(int)span.TotalDays} day{(span.TotalDays < 2 ? "" : "s")} ago"; if (span.TotalDays < 365) return $"{(int)(span.TotalDays / 30)} month{(span.TotalDays / 30 < 2 ? "" : "s")} ago"; return $"{(int)(span.TotalDays / 365)} year{(span.TotalDays / 365 < 2 ? "" : "s")} ago"; } } }