Avatar ·

Cómo calcular el tiempo relativo (por ejemplo, "hace 2 horas") en C#?

¡Hola a todos! Soy un desarrollador principiante de C# y me encontré con esta tarea: necesito mostrar la fecha en formato de "tiempo relativo" — como se hace en las redes sociales. En lugar de "01.03.2024 14:30" debería ser "hace 5 minutos", "ayer", "hace 3 días" y así sucesivamente. Por ejemplo, tengo una lista de comentarios con un campo `DateTime CreatedAt`. Quiero mostrar al usuario cuánto tiempo ha pasado desde la creación. Pero el estándar `DateTime.ToString()` solo muestra la fecha absoluta. Intenté escribir una función simple, pero funciona mal — maneja incorrectamente los límites (por ejemplo, "ayer" en lugar de "hace 1 día"), no considera el día de ayer si han pasado menos de 24 horas, y en general se ve horrible: ```csharp public string GetRelativeTime(DateTime dateTime) { var span = DateTime.Now - dateTime; if (span.TotalMinutes < 60) return $"{(int)span.TotalMinutes} minutos atrás"; if (span.TotalHours < 24) return $"{(int)span.TotalHours} horas atrás"; if (span.TotalDays < 2) return "ayer"; ```