اذهب إلى المحتوى

السؤال

نشر

على تطبيق لي بـ #C أريد حساب الزمن النسبي المنُنقضي انطلاقا من متغير datetime، مثال:

  •     منذ ساعتين.
  •     منذ 3أيام وساعات.
  •     منذ شهر واحد.

كيف أحصل على نفس النتيجة انطلاقا من متغير الوقت؟

Recommended Posts

  • 0
نشر (معدل)

الطريقة الفعالة لفعل ذلك وهي بحساب المدة الزمنية المُنقضية منذ وقت النشر إلى الآن، ووضع عدة  معايير للتحكم في الشكل النهائي الظاهر على شاشة المستخدم، مثلا عند انقاء 24 ساعة نكتب منذ يوم، بعد 60 دقيقة  أي منذ ساعة وهكذا...

// تعريف متغيرات الزمن دقيقة، ساعة، يوم...
const int SECOND = 1;
const int MINUTE = 60 * SECOND;
const int HOUR = 60 * MINUTE;
const int DAY = 24 * HOUR;
const int MONTH = 30 * DAY;

// حساب المدة المنقضية ووضعها في متغير
var ts = new TimeSpan(DateTime.UtcNow.Ticks - yourDate.Ticks);
double delta = Math.Abs(ts.TotalSeconds);
//If التأكد من قيمة المدةالمُنقضية عن طريق دالة
if (delta < 1 * MINUTE)
{
  return ts.Seconds == 1 ? "one second ago" : 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 ? "one month ago" : شهر+ " months ago";
}
else
{
  int years = Convert.ToInt32(Math.Floor((double)ts.Days / 365));
  return years <= 1 ? "one year ago" : years + " years ago";
}

الأمر غير معقد، فقط يحتاج إلى بعض التركيز- وقد أرفقت المثال بالتعليقات ليسهل فهمه- .

تم التعديل في بواسطة E.Nourddine

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...