HTMLツール

無料 Intl.DurationFormatジェネレーター

long/short/narrow/digitalスタイルのロケール対応時間長フォーマット用Intl.DurationFormatコードを生成します。

ツールを読み込み中...

Intl.DurationFormatジェネレーターとは

Intl.DurationFormatは、ロケールの慣習に従って時間の長さをフォーマットする組み込みのブラウザAPIです。時間、分、秒などのフィールドを持つデュレーションオブジェクトを指定すると、「1 hour, 30 minutes」(英語のlong形式)、「1 Std 30 Min.」(ドイツ語のshort形式)、「1:30:00」(digital形式)などの人間が読める文字列を生成します。long、short、narrow、digitalの4つのスタイルをサポートしています。Chrome 104+で利用可能で、Baseline 2025の一部です。

クイックアンサー

Intl.DurationFormatを使用して、ロケール対応形式で時間の長さを表示します。long、short、narrow、digitalのスタイルから選択できます。英語、ドイツ語、フランス語、スペイン語、日本語、オランダ語をサポートしています。moment-duration-formatを捨てて、代わりにネイティブAPIを使用してください。

Last updated: 2026-06-02

制限事項

  • Intl.DurationFormatは2026年半ば現在Safariでは利用できません。Safariユーザー向けにポリフィルまたはフォールバックライブラリを使用するか、基本的なケースではシンプルな手動フォーマッタを実装してください。
  • このAPIは単位を自動的に集約しません。{ hours: 1, minutes: 90 }は「2 hours, 30 minutes」ではなく「1 hour, 90 minutes」とフォーマットされます。自動単位変換が必要な場合は、フォーマット前にデュレーションを正規化してください。
  • 各ロケールが独自のフォーマットルールと語彙を決定します。digitalスタイルは一貫した数値出力を生成しますが、long/short/narrowスタイルはレイアウト幅に影響する方法で異なる場合があります。テキストオーバーフローを避けるため、対象ロケール全体でテストしてください。

Sources:MDN Web Docs · W3C Specifications · jquery.app on GitHub

使い方

  1. フォーマットしたい時間コンポーネントを持つデュレーションオブジェクトを作成します:{ hours: 1, minutes: 30, seconds: 0 }。
  2. 選択したロケールとオプションのスタイル設定で新しいIntl.DurationFormatインスタンスを構築します。
  3. インスタンスでformat(duration)を呼び出してローカライズされた文字列を取得するか、formatToParts(duration)を呼び出してフォーマットされたコンポーネントの配列を取得します。
  4. ツールでさまざまなロケールとスタイルを試して、言語間で時間文字列がどのように変化するかを確認します。

主な用途

  • ローカライズされたメディアプレーヤーインターフェースで動画の長さやポッドキャストの再生時間を表示します。
  • ユーザーの希望言語形式で推定読了時間や処理時間を表示します。
  • 国際化された管理ダッシュボード向けにサーバーサイドの時間(API応答時間、ジョブ実行時間)をフォーマットします。

用途

使用例

ローカライズされた動画再生時間表示

ストリーミングサービスが視聴者のロケールで動画の長さを表示します。英語の視聴者は「1 hour, 30 minutes」、ドイツ語の視聴者は「1 Std 30 Min.」、日本語の視聴者は「1時間30分」と表示されます。ユーザーのロケールでIntl.DurationFormatを使用すると、3つすべてを自動的に処理できます。

デジタルスタイルのカウントダウン表示

イベントカウントダウンタイマーが残り時間をデジタル形式で表示します:2時間15分30秒の場合「2:15:30」。Intl.DurationFormatでスタイル「digital」を使用すると、すべてのロケールで一貫したHH:MM:SS表示が生成されます。

よくあるミス

  • Intl.DurationFormatにデュレーションオブジェクトの代わりにDateやタイムスタンプを渡す。APIは{ hours: 1, minutes: 30 }のような数値のデュレーションフィールドを持つプレーンオブジェクトを期待し、タイムスタンプや日付は期待しません。
  • すべてのロケールが同じ語順や区切り文字を使用すると思い込む。日本語は区切り文字なしで時間を分の前に配置しますが、英語はカンマを使用します。英語のパターンを想定せず、必ず対象ロケールでテストしてください。
  • 時間のみのデュレーションでスタイル「digital」を使用する。デジタルスタイルで{ minutes: 45, seconds: 0 }のようなデュレーションは、先頭の時間を含む「00:45:00」と表示される場合があります。時間を表示したくない場合はデュレーションオブジェクトから時間を省略してください。

検証

  1. Chrome 104+ DevToolsコンソールを開きます。新しいIntl.DurationFormat('en', { style: 'long' })を作成します。.format({ hours: 1, minutes: 30, seconds: 15 })を呼び出し、「1 hour, 30 minutes, 15 seconds」のような文字列を返すことを確認します。
  2. ロケール'de'、スタイル'short'で2番目のインスタンスを作成します。同じデュレーションをフォーマットし、出力が「Std」や「Min.」のようなドイツ語の略語を使用することを確認し、ロケール対応の動作を確認します。

FAQ

Intl.DurationFormatジェネレーターのFAQ

Intl.DurationFormatはどのようなデュレーションフィールドを受け入れますか?

Intl.DurationFormatは、years、months、weeks、days、hours、minutes、seconds、milliseconds、microseconds、nanosecondsのフィールドを持つデュレーションオブジェクトを受け入れます。必要なフィールドのみを含めてください。省略されたフィールドは表示されません。オブジェクトは大きな単位と小さな単位を混在させることができます(たとえば、分なしの時間と秒)。

digitalスタイルはlong、short、narrowとどう違いますか?

Digitalスタイルは、デジタル時計のようにデュレーションを「1:30:00」(HH:MM:SS)のような数値の時間表示としてフォーマットします。Longスタイルは完全な単語(「1 hour, 30 minutes」)、shortは短縮形(「1 hr, 30 min」)、narrowは最小限の表記(「1h 30m」)を使用します。各ロケールが各スタイルの独自の慣習を定義します。

Intl.DurationFormatは小数のデュレーションをサポートしていますか?

デュレーション値は小数や10進数にできますが、フォーマット動作はロケールとスタイルによって異なります。たとえば、小数時間はロケールの数値慣習に従ってフォーマットされます。正確なフォーマットのためには、APIに渡す前にデュレーション値を整数単位に丸めてください。

関連ツール

その他のhtmlツール

こちらもお試しください

こちらもお試しください