如何在C#中计算相对时间(例如“2小时前”)?
大家好!我是一名C#初学者,遇到了一个任务:需要以“相对时间”格式显示日期——就像社交网络那样。而不是显示“01.03.2024 14:30”,应该显示“5分钟前”、“昨天”、“3天前”等等。
例如,我有一个评论列表,其中包含`DateTime CreatedAt`字段。我想向用户显示自创建以来经过了多少时间。但标准的`DateTime.ToString()`只输出绝对日期。
我尝试写了一个简单的函数,但它运行得很糟糕——边界处理不正确(例如,显示“昨天”而不是“1天前”),如果过去不到24小时,它不会考虑昨天,而且整体看起来非常糟糕:
```csharp
public string GetRelativeTime(DateTime dateTime)
{
var span = DateTime.Now - dateTime;
if (span.TotalMinutes < 60) return $"{(int)span.TotalMinutes} минут назад";
if (span.TotalHours < 24) return $"{(int)span.TotalHours} часов назад";
if (span.TotalDays < 2) return "вчера";
```