Paepoi

Paepoi » JavaScript Tips » JavaScript Intl

JavaScript Intl

# 最終更新日 2020.08.16
Gjs での覚書です、環境によっては print を console.log で全置換してください

NumberFormat
数値表現の国際化
#!/usr/bin/gjs

const LANG = Intl.getCanonicalLocales('ja-jp');
print(LANG);
//=> ja-JP

// 未指定でも勝手にカンマ区切りになる、少数は有効な値以外は無視される
print(new Intl.NumberFormat(LANG, {
}).format(12300.6000));
//=> 12,300.6

// 通貨
print(new Intl.NumberFormat(LANG, {
    style: 'currency',
    currency: 'JPY'
}).format(5000));
//=> ¥5,000

// ゼロ詰め、カンマ区切りを殺す必要あり
print(new Intl.NumberFormat(LANG, {
    minimumIntegerDigits: 5,
    useGrouping: false
}).format(21));
//=> 00021

// パーセント、下二桁以降は四捨五入される
print(new Intl.NumberFormat(LANG, {
    style: 'percent'
}).format(0.345));
//=> 35%

DateTimeFormat
Date を使って表現するより簡単、なのか???
#!/usr/bin/gjs

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

print(new Intl.DateTimeFormat('en-US').format(date)); //=> 12/20/2012
print(new Intl.DateTimeFormat('ja-JP').format(date)); //=> 2012/12/20
// オプションで指定したものだけ表示
print(new Intl.DateTimeFormat('ja-JP', {
    year: 'numeric',
    weekday: 'long',
    era: 'long'
}).format(date)); //=> 西暦2012年 木曜日

RelativeTimeFormat
時間や日付の差異を国際化
#!/usr/bin/gjs

const LANG = Intl.getCanonicalLocales('ja-jp');

const rtf = new Intl.RelativeTimeFormat(LANG, {
    numeric: 'auto'
});
for (let i=-3; i<4; i++) {
    print(rtf.format(i, 'day')); // hour や year 等指定は Date を見て
}
/* output
3 日前
一昨日
昨日
今日
明日
明後日
3 日後
*/

Copyright(C) sasakima-nao All rights reserved 2002 --- 2020.