如何在C#中计算相对时间(如“5分钟前”、“昨天”)?
大家好!我正在用C#(Windows Forms)编写一个小型事件日志应用。我需要以相对格式显示每个事件的日期和时间,而不是绝对格式(例如“2023-10-05 14:30:00”),就像社交媒体或即时通讯工具中那样:“刚刚”、“5分钟前”、“2小时前”、“昨天”、“3天前”等。
我是C#新手,目前只能想到用一堆if-else来解决,但这看起来非常臃肿。例如,我有一个`DateTime eventTime`变量,想得到类似“15分钟前”的字符串。
以下是我当前尝试写的“代码”(更准确地说是草稿):
```csharp
DateTime now = DateTime.Now;
TimeSpan diff = now - eventTime;
if (diff.TotalMinutes < 1)
return "刚刚";
else if (diff.TotalMinutes < 60)
return $"{(int)diff.TotalMinutes}分钟前";
else if (diff.TotalHours < 24)
return $"{(int)diff.TotalHours}小时前";
// ... 以此类推,但这既不美观,也没有考虑词形变化……