Date.prototype.toLocaleTimeString()‎

من موسوعة حسوب
مراجعة 13:46، 10 ديسمبر 2017 بواسطة عبد اللطيف ايمش (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

الدالة Date.prototype.toLocaleTimeString()‎ تعيد سلسلةً نصيةً صيغتها تتبع لمحليّة النظام (system locale) التي تُمثِّل قسم الوقت من الكائن Date.

تسمح الوسائط locales و options الجديدة للتطبيقات بتحديد اللغة التي يجب استخدام قواعد التنسيق الخاصة بها، وتسمح بتخصيص سلوك هذه الدالة؛ لكن في الإصدارات القديمة من هذه الدالة، التي كانت تتجاهل قيمة الوسيطين locales و options، كانت ستُستخدَم المحليّة (locale) في النظام ويكون شكل السلسلة النصية المُعادة تابعًا للمتصفح ونظام التشغيل.

البنية العامة

dateObj.toLocaleTimeString([locales[, options]])

انظر إلى قسم دع المتصفحات لتعرف ما هي المتصفحات التي تدعم الوسيطين locales و options.

locales

وسيطٌ اختياريٌ، وهو سلسلة نصيةٌ تحتوي على رمز اللغة وفقًا لمعيار BCP 47، أو مصفوفة من تلك الرموز. يمكن استخدام مفاتيح يونيكود الآتية مع رمز اللغة:

nu

النظام العددي، والقيم الممكنة هي "arab" و "arabext" و "bali" و "beng" و "deva" و "fullwide" و "gujr" و "guru" و "hanidec" و "khmr" و "knda" و "laoo" و "latn" و "limb" و "mlym" و "mong" و "mymr" و "orya" و "tamldec" و "telu" و "thai" و "tibt".

ca

التقويم. القيم الممكنة تتضمن: "buddhist" و "chinese" و "coptic" و "ethioaa" و "ethiopic" و "gregory" و "hebrew" و "indian" و "islamic" و "islamicc" و "iso8601" و "japanese" و "persian" و "roc".

hc

نظام الساعات (hour cycle). القيم الممكنة هي "h11" و "h12" و "h23" و "h24".

options

وسيطٌ اختياريٌ، وهو كائنٌ له بعض (أو كل) الخاصيات الآتية:

localeMatcher

تحديد خوارزمية مُطابقة المحليّة (locale) التي ستُستخدَم. القيم الممكنة هي "lookup" و "best fit"؛ والقيمة الافتراضية هي "best fit".

timeZone

المنطقة الزمنية التي ستُستعمَل. القيمة الوحيدة التي يجب أن يتعرف عليها المتصفح هي "UTC"، ويمكن أن تدعم المتصفحات أسماء المناطق من قاعدة بيانات IANA للمناطق الزمنية، مثل "Asia/Shanghai" و "Asia/Kolkata" و "America/New_York".

hour12

تحديد إذا كان سيُستخدَم نظام 12 ساعة (مقابل استخدام نظام 24 ساعة). القيم الممكنة هي true و false، والقيمة الافتراضية تعتمد على ضبط المحليّة. وقيمة هذا الخيار ستتجاوز القيمة المضبوطة في وسم hc أو الخيار hourCycle في حال كانا مضبوطين.

hourCycle

نظام الساعات المستخدم. القيم الممكنة هي "h11" و "h12" و "h23" و "h24". هذا الخيار يتجاوز قيمة الوسم hc، لكن للخيار hour12 الأولوية عليه.

formatMatcher

خوارزمية المُطابَقة المستخدمة. والقيمة الممكنة هي "basic" و "best fit"؛ القيمة الافتراضية هي "best fit". راجع الفقرات التالية لمعلومات حول استخدام هذه الخاصية.

الخاصيات الآتية تصف مكونات الوقت والتاريخ المستخدمة لتنسيق المخرجات، يجب أن تدعم المتصفحات أحد الصيغ الآتية على الأقل:

  • weekdayyearmonthdayhourminutesecond
  • weekdayyearmonthday
  • yearmonthday
  • yearmonth
  • monthday
  • hourminutesecond
  • hourminute

weekday

تمثيل اليوم في الأسبوع. القيم الممكنة هي "narrow" و "short" و "long".

era

تمثيل العصر (era). القيم الممكنة هي "narrow" و "short" و "long".

year

تمثيل السنة. القيم الممكنة هي "numeric" و "‎2-digit".

month

تمثيل الشهر. القيم الممكنة هي "numeric" و "‎2-digit" و "narrow" و "short" و "long".

day

تمثيل اليوم. القيم الممكنة هي "numeric" و "‎2-digit".

hour

تمثيل الساعة. القيم الممكنة هي "numeric" و "‎2-digit".

minute

تمثيل الدقيقة. القيم الممكنة هي "numeric" و "‎2-digit".

second

تمثيل الثانية. القيم الممكنة هي "numeric" و "‎2-digit".

timeZoneName

تمثيل الثانية. القيم الممكنة هي "short" و "‎long".

القيمة الافتراضية لكل خاصية من خاصيات الوقت والتاريخ هي undefined، لكن إذا كانت قيمة الخاصيات weekday و year و month و day هي undefined فستُعدّ قيم year و month و day على أنها "numeric".

القيمة المعادة

سلسلة نصية تُمثِّل الوقت اعتمادًا على تنسيق التحويل الخاص باللغة.

أمثلة

استخدام الدالة toLocaleTimeString()‎

في حال استخدام الدالة toLocaleTimeString()‎ دون تحديد المحليّة (locale)، فستُعاد سلسلة نصية مُنسّقة وفق المحلية الافتراضية:

var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));

console.log(date.toLocaleTimeString());
// "7:00:00 PM" in en-US locale

التحقق من دعم الوسيطين locales و options

الوسيطان locales و options أصبحا مدعومين حديثًا؛ وللتحقق إن كان المتصفح يدعمها فيمكننا استخدام كتلة try...catch، إذ إنَّ رموز اللغات غير الصالحة ستُرفضَ من هذه الدالة وستؤدي إلى رمي الاستثناء RangeError:

function toLocaleStringSupportsLocales() {
  try {
    new Date().toLocaleTimeString('i');
  } catch (e) {
    return e instanceof RangeError;
  }
  return false;
}

استخدام الوسيط locales

المثال الآتي يُظهِر بعض صيغ التاريخ عبر تحديد المحليّة. الصيغ الآتية ستفترض أنَّ المنطقة الزمنية للمحليّة هي America/Los_Angeles:

var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

المحلية en-US (أي US English) تستخدم نظام 12 ساعة مع AM/PM:

console.log(date.toLocaleTimeString('en-US'));
// "7:00:00 PM"

المحلية en-GB (أي British English) تستخدم نظام 24 ساعة دون AM/PM:

console.log(date.toLocaleTimeString('en-GB'));
// "03:00:00"

المحلية ko-KR (التابعة لكوريا) تستخدم نظام 12 ساعة مع AM/PM:

console.log(date.toLocaleTimeString('ko-KR'));
// "오후 12:00:00"

المحلية ar-EG (اللغة العربية - مصر) تستخدم الأرقام العربية المشرقية:

console.log(date.toLocaleTimeString('ar-EG'));
// "٧:٠٠:٠٠ م"

عند طلب عرض الوقت في لغة قد لا تكون مدعومةً، مثل اللغة البالية فيمكن تضمين لغة أخرى لتُستخدَم عوضًا عنها، وفي هذه الحالة سنستخدم اللغة الإندونيسية:

console.log(date.toLocaleTimeString(['ban', 'id']));
// "11.00.00"

استخدام الوسيط options

يمكن تخصيص النتائج التي توفِّرها الدالة toLocaleTimeString()‎ باستخدام الوسيط options:

var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

var options = { timeZone: 'UTC', timeZoneName: 'short' };

console.log(date.toLocaleString('en-US', options)); // المحلية هي الإنكليزية - أميركا
// "3:00:00 AM GMT"

// أحيانًا نحتاج إلى نظام 24 ساعة حتى لو كانت المحليّة هي الإنكليزية - أميركا
console.log(date.toLocaleTimeString('en-US', { hour12: false }));
// "19:00:00"

دعم المتصفحات

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي نعم نعم نعم نعم نعم
locales و options 24 29 11 15 10

مصادر ومواصفات