JavaScript Date Handling

الحصول على أسماء الشهور بكفاءة في جافا سكريبت لا تترجم فقط – بل قم بالتأقلم. فكر في كيفية تغير عادات البحث، ونية الكلمات المفتاحية، وحتى ما يُعتبر عنوانًا جذابًا من ثقافة إلى أخرى.

Spread the love

توفر جافاسكريبت عدة طرق فعالة لاسترداد اسم شهر من كائن التاريخ. تستعرض هذه المقالة ثلاث طرق شائعة، لكل منها مزايا وعيوب فريدة.

جدول المحتويات

استخدام دالة toLocaleString

توفر طريقة toLocaleString() طريقة موجزة لتنسيق التواريخ وفقًا للغة المستخدم. وهذا يضمن عرض اسم الشهر بلغته المفضلة. ومع ذلك، يتطلب التعامل بعناية لعزل اسم الشهر.


const date = new Date();
const monthName = date.toLocaleString('default', { month: 'long' }); 

console.log(monthName); // الإخراج: (مثلًا، "أكتوبر"، "نوفمبر"، إلخ)

// تحديد لغة:
const frenchMonthName = date.toLocaleString('fr-FR', { month: 'long' });
console.log(frenchMonthName); // الإخراج: (مثلًا، "octobre"، "novembre"، إلخ)

تستخدم لغة 'default' إعدادات متصفح المستخدم. يمكنك تحديد لغات مثل 'fr-FR' (الفرنسية) أو 'es-ES' (الإسبانية). يطلب الخيار month: 'long' اسم الشهر الكامل؛ استخدم month: 'short' للاختصارات.

استخدام كائن Intl.DateTimeFormat

يوفر كائن Intl.DateTimeFormat تحكمًا أكثر دقة في تنسيق التاريخ من toLocaleString()، مما يتيح تخصيصات معقدة ومعالجة أفضل للغة.


const date = new Date();
const options = { month: 'long' };
const formatter = new Intl.DateTimeFormat('default', options); // أو تحديد لغة: 'fr-FR'
const monthName = formatter.format(date);

console.log(monthName); // الإخراج: (مثلًا، "أكتوبر"، "نوفمبر"، إلخ)

// مثال مع اسم شهر مختصر:
const optionsShort = { month: 'short' };
const formatterShort = new Intl.DateTimeFormat('default', optionsShort);
const shortMonthName = formatterShort.format(date);
console.log(shortMonthName); // الإخراج: (مثلًا، "أكت"، "نوف"، إلخ)

على الرغم من كونه أكثر تفصيلًا، إلا أن هذا الأسلوب يوفر مرونة أكبر. إنشاء كائن DateTimeFormat مرة واحدة وإعادة استخدامه يحسن الكفاءة للعديد من التواريخ.

إنشاء دالة مخصصة

على الرغم من أنه أقل كفاءة ويفتقر إلى الترجمة التلقائية، إلا أن الدالة المخصصة توضح الآلية الأساسية. هذا الأسلوب أقل تفضيلًا بشكل عام من الطرق المدمجة.


const monthNames = ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو",
  "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"
];

function getMonthName(date) {
  return monthNames[date.getMonth()];
}

const date = new Date();
const monthName = getMonthName(date);
console.log(monthName); // الإخراج: (مثلًا، "أكتوبر"، "نوفمبر"، إلخ)

تستخدم هذه الدالة مصفوفة لربط أرقام الأشهر (0-11) بأسمائها. لاحظ أن date.getMonth() ترجع فهرسًا يبدأ من الصفر.

باختصار، يوصى باستخدام toLocaleString() و Intl.DateTimeFormat لترجمتهما المدمجة. يجب استخدام الدالة المخصصة فقط عندما توجد متطلبات محددة غير قياسية.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *