س:
كيف يمكن عرض الأسماء المختصرة للأيام والشهور العربية
في دوت نت؟
ج: تستخدم الرموز التالية في تكوين صيغة تنسيق التاريخ، التي تستخدم
في عدة مواضيع، مثل إرسالها كمعامل إلى الوسيلة DateTime.ToString(
):
d: تعرض
رقم اليوم.
dd: تعرض
رقم اليوم مع المحافظة على عرضه في خانتين حتى لو كان رقم اليوم أقل من 10.
ddd: تعرض
اسم اليوم المختصر.
dddd: تعرض
اسم اليوم كاملا.
M: تعرض
رقم الشهر.
MM: تعرض
رقم الشهر مع المحافظة على عرضه في خانتين حتى لو كان رقم الشهر أقل من 10.
MMM: تعرض
اسم الشهر المختصر.
MMMM: تعرض
اسم الشهر كاملا.
yy: تعرض
رقم السنة في خانتين.
yyyy: تعرض
رقم السنة في أربع خانات.
مثال: يمكنك استخدام الصيغة "ddd yyyy/MM/dd" لعرض التاريخ في الصورة:
أح
06/07/2014
جرب مثلا:
MsgBox(Now.ToString("ddd
yyyy/MM/dd"))
لكن هناك مشكلة ستواجهك، هي أن صيغ الأيام والشهور المختصرة تعمل فقط
مع اللغة الإنجليزية، لكنها لا تعمل مع الثقافة العربية، فدائما تظهر لك أسماء
الأيام والشهور كاملة بدون اختصار!
لحل هذه المشكلة، علينا تعريف الأسماء المختصرة للأيام والشهور
بأنفسنا باستخدام فئة معلومات تنسيق الوقت والتاريخ DateTimeFormatInfo
Class.. هذه الفئة
تحتوي على خاصيتين هامتين:
- الأسماء المختصرة للأيام AbbreviatedDayNames:
هذه الخاصية مصفوفة نصية String Array، وهي تقرأ أو تغير الأسماء المختصرة لأيام
الأسبوع، باللغة التي تنتمي إليها ثقافة الكائن الحالي.. لاحظ أن أول يوم في هذه
المصفوفة هو يوم الأحد Sunday.
- الأسماء المختصرة للشهور AbbreviatedMonthNames:
هذه الخاصية مصفوفة نصية String Array، وهي تقرأ أو تغير الأسماء المختصرة لشهور
السنة، باللغة التي تنتمي إليها ثقافة الكائن الحالي.
لاحظ أن هذه المصفوفة يجب أن تحتوي على 13 خانة، لأن بعض أنواع
التقاويم تحتوي على شهر مضاف كل عدة أعوام.. فإذا كنت تتعامل مع تقويم يستخدم 12
شهرا فقط، فضع في الخانة الأخيرة نصا فارغا "".
ولاستخدام هاتين الخاصيتين، يجب تعريف كائن ثقافة جديدا من الفئة CultureInfo مبني على ثقافة اللغة العربية (وليكن اللغة العربية – مصر "ar-eg")، واستخدام الخاصية DateTimeFormat الخاصة بهذا الكائن لتعريف الأسماء المختصرة
للأيام والشهور، ثم جعل العملية الفرعية الحالية Current
Thread تستخدم كائن
الثقافة المعدّل.. ضع هذا الكود في حدث تحميل النموذج Load:
Dim ArEg As New CultureInfo("ar-eg", True)
ArEg.DateTimeFormat.AbbreviatedDayNames =
{"أح", "اث", "ثل",
"أر", "خم", "جم",
"سب"}
ArEg.DateTimeFormat.AbbreviatedMonthNames =
{"ينا", "فبر", "مار",
"أبر", "ماي", "يون",
"يول", "أغ",
"سب",
"أك", "نوف", "ديس",
""}
System.Threading.Thread.CurrentThread.CurrentCulture
= ArEg
الآن لو جربت صيغ الأيام والشهور المختصرة في أي كود تستخدمه
في هذا النموذج، فسظهر التاريخ بالتنسيق الذي تريده.. جرب مثلا:
MsgBox(Now.ToString("ddd d MMM
yyyy"))
هذه الرسالة ستعرض تاريخا على الصيغة:
أح 6
يول 2014
ليست هناك تعليقات:
إرسال تعليق
ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.