דרך מוחלטת לאתחל תאריכים לאתרים בינלאומיים
פורמטים של תאריכים משתנים עם האזור והשפה, לכן תמיד יהיה מועיל אם נוכל למצוא דרך להציג את התאריכים למשתמשים, ספציפית לשפה ולאזור שלהם.
חזרה בדצמבר 2012, ECMA פרסמה את המפרט של ממשק ה- API של Internationalization עבור JavaScript. ממשק ה- API של Internationalization מסייע לנו להציג נתונים מסוימים על פי השפה והמפרטים הקיצוניים. זה יכול לשמש לזהות מטבעות, אזורי זמן ועוד.
בהודעה זו אנו נסתכל תאריך עיצוב באמצעות ממשק API זה.
הכר את האזור של המשתמש
כדי להציג את התאריך לפי האזור המועדף על המשתמש, תחילה עלינו לדעת מהו המיקום המועדף. נכון לעכשיו את הדרך חסינת תקלות לדעת כי היא לשאול את המשתמש; מאפשרים למשתמשים לבחור את השפה המועדפת שלהם ואת הגדרות האזור בדף האינטרנט.
אבל, אם זה לא אופציה אתה יכול לפרש את קבל שפה
כותרת הבקשה או לקרוא את navigator.language
(עבור Chrome ו- Firefox) או navigator.browserLanguage
(עבור IE) ערכים.
לידיעתך, לא כל האפשרויות הללו מחזירות את השפה המועדפת של ממשק המשתמש של הדפדפן.
var language_tag = window.navigator.browserLanguage || window.navigator.language || "en"; // מחזירה תגי שפה כמו 'en-GB'
בדוק את ממשק ה- API של הבינאום
כדי לדעת אם הדפדפן תומך בממשק API של בינאום או לא, אנו יכולים לבדוק את נוכחות העצם הגלובלי Intl
.
אם (window.hasOwnPropertyâ €‹("Intl") && typeof Intl === "אובייקט") / API הבינאום קיים, תנו לנו להשתמש בו
ה Intl אובייקט
Intl
הוא אובייקט גלובלי לשימוש בממשק ה- API של הבינאום. יש לו שלושה נכסים אשר בוני עבור שלושה אובייקטים כלומר קולטור
, מספר פורמט
, ו DateTimeFormat
.
האובייקט שנשתמש בו הוא DateTimeFormat
אשר יסייע לנו לפורמט תאריך תאריך לפי שפות שונות.
ה DateTimeFormat אובייקט
ה DateTimeFormat
הבנאי לוקח שני ארגומנטים אופציונליים;
מקומות
- מחרוזת או מערך של מחרוזות המייצגות את תגי השפה, לדוגמה; “de” עבור השפה הגרמנית, “en-GB” אנגלית בשימוש בבריטניה. אם תג שפה אינו מוזכר, אזור ברירת המחדל יהיה ברירת המחדל.אפשרויות
- אובייקט אשר תכונותיו משמשות להתאמה אישית של המתכנן. יש לו את המאפיינים הבאים:
נכס | תיאור | ערכים אפשריים |
יום | יום החודש | “2 ספרות”, “נומרי” |
עיד | עידן התאריך נופל, למשל: לפנה"ס | “צר”, “קצר”, “ארוך” |
formatMatcher | האלגוריתם המשמש להתאמת פורמט | “בסיסי”, “הכי מתאים”[ברירת מחדל] |
שעה | מייצג שעות באותה עת | “2 ספרות”, “נומרי” |
12te | מציין תבנית של 12 שעות (נכון ) או בפורמט 24 שעות (שקר ) | נכון , שקר |
מקומי | האלגוריתם המשמש להתאמה מקומית | “הבט מעלה”, “הכי מתאים”[ברירת מחדל] |
דקה | דקות באותה עת | “2 ספרות”, “נומרי” |
חודש | חודש בשנה | “2 ספרות”, “נומרי”, “צר”, “קצר”, “ארוך” |
השני | שניות באותה תקופה | “2 ספרות”, “נומרי” |
אזור זמן | אזור זמן להחלה | “UTC”, ברירת המחדל היא אזור זמן ריצה |
שם | אזור הזמן של התאריך | “קצר”, “ארוך” |
יום חול | יום בשבוע | “צר”, “קצר”, “ארוך” |
שנה | שנת התאריך | “2 ספרות”, “נומרי” |
דוגמא:
var formatter = Intl.DateTimeFormat חדש ('en-GB'); / * מחזירה מעצב שיכול לעצב תאריך בפורמט בבריטניה אנגלית תאריך * /
var options = weekday: 'short'; var formatter = Intl.DateTimeFormat חדש ('en-GB', אופציות); / * מחזירה מעצב שיכול לעצב תאריך בפורמט בריטניה אנגלית תאריך * יחד עם יום השבוע קצר סימון כמו 'Thu' עבור יום חמישי * /
ה פורמט פונקציה
המופע של DateTimeFormat
אובייקט יש נכס accessor (getter) שנקרא פורמט
אשר מחזירה פונקציה כי פורמטים תאריך
מבוסס על ה מקומות
ו אפשרויות
נמצא ב DateTimeFormat
למשל.
הפונקציה לוקחת תאריך
אובייקט לא מוגדר
כארגומנט אופציונלי ומחזירה א מחרוזת
בפורמט התאריך המבוקש.
הערה: אם גם הוויכוח לא מוגדר
או לא מסופק אז זה מחזיר את הערך של Date.now ()
בפורמט התאריך המבוקש.
הנה התחביר:
חדש Intl.DateTimeFormat (). format () / / יחזיר את התאריך הנוכחי בפורמט תאריך ריצה
ועכשיו תן לנו קוד עיצוב תאריך פשוט.
תן לנו לשנות את השפה ולראות את הפלט.
עכשיו, הגיע הזמן לבחון את האפשרויות.
ה כדי שיטה
במקום להשתמש מעצב כפי שמוצג בדוגמאות לעיל, אתה יכול גם להשתמש Date.prototype.toLocaleString
באותו אופן עם מקומות
ו אפשרויות
הם דומים, אך מומלץ להשתמש DateTimeFormat
כאשר מתמודדים עם תאריכים רבים מדי ביישום שלך.
var mydate = תאריך חדש ('2015/04/22'); var options = weekday: "short", year: "numeric", month: "long", day: "numeric"; console.log (mydate.toLocaleDateString ('en-GB', אופציות)); // Return "Wed, 22 אפריל 2015"
בדוק אם מקומות נתמכים
כדי לבדוק את התמיכה הנתמכת מקומות
, אנו יכולים להשתמש בשיטה נתמכים
of DateTimeFormat
אובייקט. הוא מחזיר מערך של כל האזורים התומכים או מערך ריק אם אף אחד מהמקומות אינו נתמך.
לבדיקה, תן לנו להוסיף מקום דמה “בלה” ברשימת המקומות להיבדק.
console.log (Intl.DateTimeFormat.supportedLocalesOf (["zh", "blah", "fa-pes"]); // מחזירה מערך ["zh", "fa-pes"]
תמיכה בדפדפן
בסוף חודש אפריל 2015, הדפדפנים העיקריים תומכים בממשק ה- API של Internationalization.
הפניות
- ECMA בינלאומי: מפרט ה- API של בינארי של ECMAScript
- IANA: רישום תת שפה
- פינת נורברט: ממשק ה- API של ECMAScript