Date.prototype.toLocaleString() の便利な使い方とロケールの活用法
Date.prototype.toLocaleString() は、日付や数値をユーザーの言語や文化に合わせてフォーマットするJavaScriptのメソッドです。第1引数にロケール(国や言語コード)、第2引数にoptionsオブジェクトを渡すことで、多彩な表現が可能です。
1. 基本:ユーザーの環境に自動で合わせる
ロケールを省略すると、閲覧しているユーザーのブラウザやOSの言語設定を自動的に使用し、最も自然なフォーマットで表示します。
const date = new Date();
// ユーザーの環境設定に従って表示
console.log(date.toLocaleString());
2. 目的に応じた便利なロケール指定
「きれいな」ハイフン形式 (YYYY-MM-DD) で出力する
プログラムで扱いやすく、国際的に明確な YYYY-MM-DD 形式(ISO 8601)で日付を出力したい場合に非常に便利です。
- ロケール:
sv-SE(スウェーデン),en-CA(カナダ)
const date = new Date();
// YYYY-MM-DD 形式で出力
console.log(date.toLocaleDateString('sv-SE'));
//-> 2025-07-15
メリット:
- ソートが容易: 文字列として並べ替えるだけで時系列になる。
- 国際的に明確:
MM/DDやDD/MMのような曖昧さがない。 - データベースとの親和性: 多くのDBで標準的に使われる。
和暦 (日本の元号) で出力する
日本のユーザー向けに、日付を和暦で表示します。
- ロケール:
ja-JP-u-ca-japanese
const date = new Date();
const options = { era: 'long', year: 'numeric', month: 'long', day: 'numeric' };
console.log(date.toLocaleString('ja-JP-u-ca-japanese', options));
//-> 令和7年7月15日
国によるフォーマットの違いを確認する (国際化対応)
アプリケーションの国際化対応をテストする際に、フォーマットが異なるロケールが役立ちます。
日付の順序
en-US(アメリカ):月/日/年en-GB(イギリス):日/月/年
const date = new Date('2025-07-15');
console.log(date.toLocaleDateString('en-US')); //-> 7/15/2025
console.log(date.toLocaleDateString('en-GB')); //-> 15/07/2025
3. options を使った高度なフォーマット
第2引数のoptionsオブジェクトで、より詳細なフォーマットが可能です。
日付と時刻の詳細フォーマット
曜日、時刻、タイムゾーンなど、表示する要素を細かく制御できます。
const date = new Date();
const options = {
weekday: 'long', // 'short', 'narrow'
year: 'numeric', // '2-digit'
month: 'long', // 'short', 'narrow', 'numeric', '2-digit'
day: 'numeric', // '2-digit'
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
timeZoneName: 'short'
};
console.log(date.toLocaleString('ja-JP', options));
//-> 2025年7月15日火曜日 13時28分34秒 JST
console.log(date.toLocaleString('en-US', options));
//-> Tuesday, July 15, 2025 at 1:28:34 PM GMT+9
※ この文章は Gemini の支援を受けて作成されています。