المتابعون للمدونة

الأحد، 6 يوليو 2014

الأسماء المختصرة للأيام والشهور العربية


س: كيف يمكن عرض الأسماء المختصرة للأيام والشهور العربية في دوت نت؟ 



ج: تستخدم الرموز التالية في تكوين صيغة تنسيق التاريخ، التي تستخدم في عدة مواضيع، مثل إرسالها كمعامل إلى الوسيلة 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

ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.

صفحة الشاعر