Avatar ·

如何在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}小时前"; // ... 以此类推,但这既不美观,也没有考虑词形变化……