非標準
この機能は標準ではなく、標準化の予定もありません。公開されている Web サイトには使用しないでください。ユーザーによっては使用できないことがあります。実装ごとに大きな差があることもあり、将来は振る舞いが変わるかもしれません。
非標準の toLocaleFormat() メソッドは、指定した書式を用いて日付を文字列に変換します。Intl.DateTimeFormat は、標準に準拠した方法で日付をフォーマットする代替です。Date.prototype.toLocaleDateString() の新しいバージョンも参照してください。
構文
dateObj.toLocaleFormat(formatString)
引数
formatString- C 言語の
strftime()関数で期待されるのと同じ書式のフォーマット文字列。
戻り値
指定された書式を用いて与えられた日付を表す文字列。
説明
toLocaleFormat() メソッドは、生成された日付または時刻の書式をソフトウェアで制御する機能を提供します。月や曜日の名前は、オペレーティングシステムのロケールを用いてローカライズされます。しかし、月日の順序や他のローカライズタスクについては、表示する順序を使用者が制御するため、自動的に扱われません。あなたは、フォーマット文字列がユーザのシステム設定によって適切にローカライズされるように気を付けなければなりません。使用されるロケールがブラウザのロケールと同じである必要がないことにも意識してください。
拡張機能と XULRunner の開発者は、chrome://somedomain/locale/somefile.ext URIを用いて .dtd や .properties ファイルからフォーマット文字列を読み込むのは避けなければならないことを知っています。.dtd/.properties ファイルと toLocaleFormat() メソッドは同じロケールを使う必要がないためです。これは、思いがけない見かけ、または曖昧であったり読めなかったりする日付を返す結果になります。
使用されるロケールの振る舞いはプラットフォームに依存することにも注意してください。ユーザは使用されるロケールを変更しているかもしれません。システムロケールを使用してフォーマット文字列を選ぶと、場合によっては適切でない可能性があります。より一般的な Date オブジェクトの toLocale* メソッドの使用を検討してください。または、日付を独自にローカライズし、このメソッドを使う代わりに Date オブジェクトの get* メソッドのいずれかを使って表示されるようにしてください。
例
toLocaleFormat() を使う
var today = new Date();
var date = today.toLocaleFormat('%A, %B %e, %Y'); // 悪い例
この例では、toLocaleFormat() は "Wednesday, October 3, 2007" のような文字列を返します。この例のフォーマット文字列は適切にローカライズされていないことに注意してください。これは、上述の問題を起こします。
互換コード
DateJS ライブラリを用いた Date.prototype.toLocaleDateString() 互換のコード:
if (!Date.prototype.toLocaleFormat) {
(function() {
Date.prototype.toLocaleFormat = function(formatString) {
return this.format(formatString);
};
}());
}
仕様
仕様の一部ではありません。JavaScript 1.6 で実装。
ブラウザの実装状況
| 機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| 基本サポート | ? | (有) | 未サポート | ? | ? |
| 機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| 基本サポート | ? | ? | (有) | ? | ? | ? |