توفر جافاسكريبت عدة طرق فعالة لاسترداد اسم شهر من كائن التاريخ. تستعرض هذه المقالة ثلاث طرق شائعة، لكل منها مزايا وعيوب فريدة.
جدول المحتويات
استخدام دالة 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
لترجمتهما المدمجة. يجب استخدام الدالة المخصصة فقط عندما توجد متطلبات محددة غير قياسية.