Avatar ·

Como calcular tempo relativo em C# (tipo "5 minutos atrás", "ontem")?

Olá a todos! Estou escrevendo um pequeno aplicativo em C# (Windows Forms) para registrar logs de eventos. Preciso exibir a data e hora de cada evento não no formato absoluto (por exemplo, "2023-10-05 14:30:00"), mas no relativo — como é feito em redes sociais ou mensageiros: "agora mesmo", "5 minutos atrás", "2 horas atrás", "ontem", "3 dias atrás" etc. Sou iniciante em C# e por enquanto só consigo imaginar a solução através de um monte de if-else, mas isso parece terrivelmente complicado. Por exemplo, tenho uma variável `DateTime eventTime` e quero obter uma string como "15 minutos atrás". Aqui está meu "código" atual (ou melhor, um rascunho) que tentei escrever: ```csharp DateTime now = DateTime.Now; TimeSpan diff = now - eventTime; if (diff.TotalMinutes < 1) return "agora mesmo"; else if (diff.TotalMinutes < 60) return $"{(int)diff.TotalMinutes} minutos atrás"; else if (diff.TotalHours < 24) return $"{(int)diff.TotalHours} horas atrás"; // ... e assim por diante, mas isso não é bonito e não considera as variações de