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";
```