knowledge-base

View project on GitHub

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/DDDD/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 の支援を受けて作成されています。