Avatar ·

كيفية حساب الوقت النسبي (مثل "منذ ساعتين") في 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 "أمس"; ```