كيفية حساب الوقت النسبي (مثل "منذ ساعتين") في C#؟
مرحباً بالجميع! أنا مطور C# مبتدئ وواجهت مهمة: عرض التاريخ بتنسيق "الوقت النسبي" — كما تفعل الشبكات الاجتماعية. بدلاً من "01.03.2024 14:30" يجب أن يكون "منذ 5 دقائق"، "أمس"، "منذ 3 أيام" وهكذا.
على سبيل المثال، لدي قائمة تعليقات مع حقل `DateTime CreatedAt`. أريد إظهار الوقت المنقضي منذ الإنشاء للمستخدم. لكن `DateTime.ToString()` القياسي يعرض فقط التاريخ المطلق.
حاولت كتابة دالة بسيطة، لكنها تعمل بشكل سيء — تعالج الحدود بشكل خاطئ (مثل "أمس" بدلاً من "منذ يوم واحد")، ولا تراعي اليوم السابق إذا مر أقل من 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 "أمس";
```