كيفية حساب الوقت النسبي في C#

عند العمل مع التواريخ والأوقات في C#، قد تجد الحاجة للتعبير عن مقدار الوقت الذي مضى منذ حدث معين. يمكن أن يعزز ذلك تجربة المستخدم من خلال عرض الوقت بتنسيق يمكن فهمه بسهولة، مثل “منذ ساعتين” أو “منذ شهر”. في هذا المنشور، سنستكشف كيفية تنفيذ هذه الوظيفة باستخدام فئات DateTime وTimeSpan في C#.

مفهوم الوقت النسبي

يشير الوقت النسبي إلى التعبير عن الوقت المنقضي منذ حدث معين بلغة سهلة الفهم. بدلاً من عرض طوابع زمنية دقيقة، فإن عرض الوقت مثل “منذ 3 أيام” أو “أمس” يجعل من السهل على المستخدمين فهم الوقت المنقضي دون الحاجة إلى القيام بحسابات ذهنية.

تنفيذ الوقت النسبي في C#

إليك كيفية حساب الوقت النسبي باستخدام قيمة DateTime في C#:

الخطوة 1: تحديد الثوابت لفترات الوقت

أولاً، ستحتاج إلى إنشاء ثوابت تمثل فترات زمنية مختلفة. يجعل ذلك التعليمات البرمجية أكثر نظافةً وسهولة في الفهم.

const int SECOND = 1;
const int MINUTE = 60 * SECOND;
const int HOUR = 60 * MINUTE;
const int DAY = 24 * HOUR;
const int MONTH = 30 * DAY;

الخطوة 2: حساب TimeSpan

لتحديد مقدار الوقت الذي مضى، احسب TimeSpan بين الوقت الحالي وDateTime المعطى.

var ts = new TimeSpan(DateTime.UtcNow.Ticks - yourDate.Ticks);
double delta = Math.Abs(ts.TotalSeconds);

الخطوة 3: تحديد تنسيق الوقت المناسب

مع حساب TimeSpan، يمكنك الآن تحديد كيفية تنسيق الوقت النسبي باستخدام عبارات شرطية.

إليك كيفية إرجاع السلسلة المناسبة بناءً على فترات زمنية مختلفة:

if (delta < 1 * MINUTE)
    return ts.Seconds == 1 ? "منذ ثانية واحدة" : ts.Seconds + " ثواني مضت";

if (delta < 2 * MINUTE)
    return "منذ دقيقة واحدة";

if (delta < 45 * MINUTE)
    return ts.Minutes + " دقائق مضت";

if (delta < 90 * MINUTE)
    return "منذ ساعة واحدة";

if (delta < 24 * HOUR)
    return ts.Hours + " ساعات مضت";

if (delta < 48 * HOUR)
    return "أمس";

if (delta < 30 * DAY)
    return ts.Days + " أيام مضت";

if (delta < 12 * MONTH)
{
    int months = Convert.ToInt32(Math.Floor((double)ts.Days / 30));
    return months <= 1 ? "منذ شهر واحد" : months + " أشهر مضت";
}
else
{
    int years = Convert.ToInt32(Math.Floor((double)ts.Days / 365));
    return years <= 1 ? "منذ عام واحد" : years + " سنوات مضت";
}

الأفكار النهائية

تسمح لك التعليمات البرمجية أعلاه بحساب وعرض الوقت النسبي بفاعلية وبطريقة بسيطة. عند تنفيذ هذا في تطبيق C# الخاص بك، يمكنك تحسين قابليته للاستخدام من خلال جعل مراجع التاريخ أكثر ارتباطًا بالمستخدمين.

الآن أنت مجهز بطريقة عملية لتعزيز تطبيقك بعروض الوقت النسبي. Happy coding!