كيف أعرض مؤشرات قبل الميلاد/بعد الميلاد أو مؤشرات العصور الأخرى؟
استخدم خيار era في Intl.DateTimeFormat لعرض Anno Domini (بعد الميلاد)، Before Christ (قبل الميلاد)، وأسماء العصور من أنظمة التقويم الأخرى
مقدمة
معظم التواريخ التي تتعامل معها تقع ضمن العصر الحالي للتقويم الميلادي، مما يجعل مؤشرات العصر غير ضرورية. تاريخ مثل "15 أكتوبر 2024" واضح دون إضافة "م" في النهاية. ومع ذلك، فإن التواريخ التاريخية التي تعود إلى أكثر من ألفي عام تحتاج إلى مؤشرات العصر لتوضيح ما إذا كانت السنة تقع قبل أو بعد السنة 1.
تستخدم الثقافات المختلفة أيضًا أنظمة تقويم مختلفة مع عصورها الخاصة. يقسم التقويم الياباني الزمن إلى عصور إمبراطورية مسماة مثل ريوا وهيسي. يحسب التقويم البوذي السنوات من وفاة بوذا. التقويم الإسلامي له عصره الخاص الذي يبدأ بالهجرة.
توفر Intl.DateTimeFormat في جافا سكريبت خيار era الذي يعرض هذه المؤشرات. يعمل هذا الخيار مع كل من التقويم الميلادي وأنظمة التقويم الأخرى، ويقوم تلقائيًا بتنسيق العصر وفقًا لاتفاقيات اللغة المحلية.
فهم العصور في أنظمة التقويم
يمثل العصر فترة زمنية محسوبة من حدث مهم أو نقطة بداية. يستخدم التقويم الميلادي عصرين: م (ميلادي) للتواريخ بعد السنة 1، وق.م (قبل الميلاد) للتواريخ قبل السنة 1.
يصبح العصر مهمًا عند عرض التواريخ التاريخية. يمكن أن تشير السنة 500 إلى 500 م أو 500 ق.م، وهما تاريخان يفصل بينهما ألف سنة. إضافة مؤشر العصر يزيل هذا الغموض.
تحدد أنظمة التقويم الأخرى العصور بشكل مختلف. يتغير التقويم الياباني مع عهد كل إمبراطور. يستخدم التقويم البوذي عصرًا واحدًا يبدأ في 543 ق.م. لكل نظام تقويم اتفاقياته الخاصة لعرض أسماء العصور.
عرض مؤشرات العصر في التواريخ الميلادية
يقبل خيار era ثلاث قيم تتحكم في كيفية عرض العصر. القيمة long تُظهر اسم العصر كاملاً. القيمة short تُظهر شكلاً مختصراً. القيمة narrow تُظهر التمثيل الأكثر إيجازاً.
const date = new Date('2024-10-15');
const long = new Intl.DateTimeFormat('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric',
era: 'long'
});
console.log(long.format(date)); // "October 15, 2024 Anno Domini"
const short = new Intl.DateTimeFormat('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric',
era: 'short'
});
console.log(short.format(date)); // "October 15, 2024 AD"
const narrow = new Intl.DateTimeFormat('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric',
era: 'narrow'
});
console.log(narrow.format(date)); // "October 15, 2024 A"
القيمة long تنتج "Anno Domini" للتواريخ الميلادية. القيمة short تنتج "AD". القيمة narrow تنتج فقط "A".
بالنسبة للتواريخ الحديثة، يكون مؤشر العصر زائداً عن الحاجة لأن التواريخ في العصر الحالي تُفترض افتراضياً. عادةً ما تقوم بتضمين مؤشر العصر فقط عند عرض التواريخ التاريخية حيث يكون التمييز مهماً.
تنسيق تواريخ ما قبل الميلاد باستخدام مؤشرات العصر
تمثل جافاسكريبت تواريخ ما قبل الميلاد باستخدام أرقام سنوات سالبة أو عن طريق تمرير قيم سالبة إلى منشئ Date. السنة -500 تمثل 501 قبل الميلاد، والسنة -1 تمثل 2 قبل الميلاد، والسنة 0 تمثل 1 قبل الميلاد.
const bcDate = new Date(-500, 0, 1); // January 1, 501 BC
const long = new Intl.DateTimeFormat('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric',
era: 'long'
});
console.log(long.format(bcDate)); // "January 1, 501 Before Christ"
const short = new Intl.DateTimeFormat('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric',
era: 'short'
});
console.log(short.format(bcDate)); // "January 1, 501 BC"
القيمة long تنتج "Before Christ" لتواريخ ما قبل الميلاد. القيمة short تنتج "BC". تظهر السنة كرقم موجب مع مؤشر العصر الذي يوضح ما إذا كانت تقع قبل أو بعد السنة 1.
تتطلب تواريخ ما قبل الميلاد معالجة دقيقة لأن كائن Date في جافاسكريبت له قيود عند العمل مع التواريخ البعيدة في الماضي. التواريخ التاريخية قبل توحيد التقويم الميلادي في عام 1582 هي تقريبية، والتواريخ قبل السنة 1 تستخدم نظام تقويم لم يكن موجوداً في ذلك الوقت.
عرض العصور في التقويم الياباني
يستخدم التقويم الياباني عصورًا مسماة تتغير مع حكم كل إمبراطور. العصر الحالي هو ريوا، الذي بدأ في عام 2019. العصر السابق كان هيسي، الذي استمر من 1989 إلى 2019.
يمكنك تحديد التقويم الياباني باستخدام امتداد يونيكود -u-ca-japanese في معرّف اللغة المحلية.
const date = new Date('2024-10-15');
const long = new Intl.DateTimeFormat('ja-JP-u-ca-japanese', {
year: 'numeric',
month: 'long',
day: 'numeric',
era: 'long'
});
console.log(long.format(date)); // "令和6年10月15日"
const short = new Intl.DateTimeFormat('ja-JP-u-ca-japanese', {
year: 'numeric',
month: 'long',
day: 'numeric',
era: 'short'
});
console.log(short.format(date)); // "令和6年10月15日"
const narrow = new Intl.DateTimeFormat('ja-JP-u-ca-japanese', {
year: 'numeric',
month: 'long',
day: 'numeric',
era: 'narrow'
});
console.log(narrow.format(date)); // "R6年10月15日"
تعرض القيم long وshort كلاهما "令和" (ريوا) متبوعة بالسنة ضمن ذلك العصر. السنة 2024 هي السنة السادسة من عصر ريوا. تعرض القيمة narrow الحرف "R" كاختصار مضغوط.
السنة المعروضة ليست السنة الميلادية بل السنة ضمن العصر الإمبراطوري الحالي. كل عصر يبدأ العد من 1.
عرض العصور في التقويم البوذي
يحسب التقويم البوذي السنوات من وفاة بوذا في 543 قبل الميلاد. السنة البوذية 2567 تقابل السنة الميلادية 2024.
يمكنك تحديد التقويم البوذي باستخدام امتداد يونيكود -u-ca-buddhist في معرّف اللغة المحلية.
const date = new Date('2024-10-15');
const long = new Intl.DateTimeFormat('th-TH-u-ca-buddhist', {
year: 'numeric',
month: 'long',
day: 'numeric',
era: 'long'
});
console.log(long.format(date)); // "15 ตุลาคม พุทธศักราช 2567"
const short = new Intl.DateTimeFormat('th-TH-u-ca-buddhist', {
year: 'numeric',
month: 'long',
day: 'numeric',
era: 'short'
});
console.log(short.format(date)); // "15 ตุลาคม พ.ศ. 2567"
تعرض القيمة long "พุทธศักราช" (العصر البوذي) كاسم كامل للعصر. تعرض القيمة short "พ.ศ." كشكل مختصر. السنة 2567 تمثل سنة التقويم البوذي المقابلة لسنة 2024 في التقويم الميلادي.
يستخدم التقويم البوذي بشكل شائع في تايلاند وكمبوديا ولاوس وميانمار وسريلانكا.
كيف تختلف تنسيقات العصور عبر اللغات المحلية
تستخدم اللغات المحلية المختلفة مصطلحات واختصارات مختلفة للعصر نفسه. تظهر عصور التقويم الميلادي باللغة والأسلوب المناسبين لكل لغة محلية.
const date = new Date('2024-10-15');
const options = {
year: 'numeric',
month: 'long',
day: 'numeric',
era: 'short'
};
const en = new Intl.DateTimeFormat('en-US', options);
console.log(en.format(date)); // "October 15, 2024 AD"
const fr = new Intl.DateTimeFormat('fr-FR', options);
console.log(fr.format(date)); // "15 octobre 2024 ap. J.-C."
const de = new Intl.DateTimeFormat('de-DE', options);
console.log(de.format(date)); // "15. Oktober 2024 n. Chr."
تستخدم اللغة الإنجليزية "AD" (Anno Domini). وتستخدم الفرنسية "ap. J.-C." (après Jésus-Christ، بمعنى "بعد المسيح"). وتستخدم الألمانية "n. Chr." (nach Christus، بمعنى "بعد المسيح").
يتبع موضع مؤشر العصر أيضًا اصطلاحات اللغة المحلية. عادةً ما تضع اللغة الإنجليزية المؤشر بعد السنة، بينما قد تضعه اللغات المحلية الأخرى في مواضع مختلفة.
const bcDate = new Date(-500, 0, 1);
const options = {
year: 'numeric',
month: 'long',
day: 'numeric',
era: 'short'
};
const en = new Intl.DateTimeFormat('en-US', options);
console.log(en.format(bcDate)); // "January 1, 501 BC"
const fr = new Intl.DateTimeFormat('fr-FR', options);
console.log(fr.format(bcDate)); // "1 janvier 501 av. J.-C."
const de = new Intl.DateTimeFormat('de-DE', options);
console.log(de.format(bcDate)); // "1. Januar 501 v. Chr."
تستخدم الفرنسية "av. J.-C." (avant Jésus-Christ، بمعنى "قبل المسيح") للتواريخ قبل الميلاد. وتستخدم الألمانية "v. Chr." (vor Christus، بمعنى "قبل المسيح").
حالات الاستخدام الشائعة
يتطلب عرض التواريخ التاريخية مؤشرات العصر لتجنب الالتباس.
const battleOfMarathon = new Date(-490, 8, 12); // September 12, 490 BC
const formatter = new Intl.DateTimeFormat('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric',
era: 'short'
});
console.log(`Battle of Marathon: ${formatter.format(battleOfMarathon)}`);
// "Battle of Marathon: September 12, 490 BC"
يتطلب عرض التواريخ في السياقات الثقافية التي تستخدم أنظمة تقويم مختلفة تنسيقًا مناسبًا للتقويم والعصر.
const date = new Date('2024-10-15');
const japaneseFormatter = new Intl.DateTimeFormat('ja-JP-u-ca-japanese', {
year: 'numeric',
month: 'long',
day: 'numeric',
era: 'long'
});
console.log(`Japanese date: ${japaneseFormatter.format(date)}`);
// "Japanese date: 令和6年10月15日"
غالبًا ما تعرض الكتابات الأكاديمية أو التاريخية كلاً من قبل الميلاد (BC) وبعد الميلاد (AD) بشكل صريح للحفاظ على الاتساق عبر الفترات الزمنية.
const dates = [
new Date(-2500, 0, 1), // 2501 BC
new Date(-500, 0, 1), // 501 BC
new Date(500, 0, 1), // 500 AD
new Date(1500, 0, 1) // 1500 AD
];
const formatter = new Intl.DateTimeFormat('en-US', {
year: 'numeric',
era: 'short'
});
dates.forEach(date => {
console.log(formatter.format(date));
});
// "2501 BC"
// "501 BC"
// "500 AD"
// "1500 AD"
ملخص
خيار era في Intl.DateTimeFormat يعرض مؤشرات العصور مثل AD (بعد الميلاد)، BC (قبل الميلاد)، أو أسماء العصور من أنظمة التقويم الأخرى. يقبل الخيار ثلاث قيم: long للأسماء الكاملة للعصور مثل "Anno Domini"، وshort للاختصارات مثل "AD"، وnarrow للشكل الأكثر اختصارًا مثل "A".
تتطلب تواريخ ما قبل الميلاد (BC) أرقام سنوات سالبة في منشئ Date في جافاسكريبت. يعرض الإخراج المنسق السنة كرقم موجب مع مؤشر العصر الذي يوضح ما إذا كان يقع قبل أو بعد السنة 1.
أنظمة التقويم الأخرى لها عصورها الخاصة. يستخدم التقويم الياباني عصورًا إمبراطورية مسماة مثل ريوا. يستخدم التقويم البوذي عصرًا واحدًا يبدأ في 543 قبل الميلاد. يمكنك تحديد نظام التقويم باستخدام امتدادات يونيكود في معرّف اللغة المحلية.
تستخدم اللغات المحلية المختلفة مصطلحات مختلفة لنفس العصر. تستخدم الإنجليزية "AD" و"BC"، وتستخدم الفرنسية "ap. J.-C." و"av. J.-C."، وتستخدم الألمانية "n. Chr." و"v. Chr.". يطبق المنسق تلقائيًا المصطلحات والمواضع المناسبة لكل لغة محلية.