16

JavaScript のオブジェクトのtoString()toLocaleString()メソッドの違いがわかりません。Date私が知っていることの 1 つは、オブジェクトを文字列に変換する必要があるtoString()ときはいつでも自動的に呼び出されることです。Date

次のコードは、常に同じ結果を返します。

​var d = new Date();
document.write( d + "<br />" );
document.write( d.toString() + "<br />" );
document.write( d.toLocaleString() );

出力は次のとおりです。

Tue Aug 14 2012 08:08:54 GMT+0500 (PKT)
Tue Aug 14 2012 08:08:54 GMT+0500 (PKT)
Tue Aug 14 2012 08:08:54 GMT+0500 (PKT)
4

5 に答える 5

19

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleString

基本的に、関数が呼び出されたコンピューターでのフォーマット方法に合わせて Date をフォーマットします。たとえば、米国では Month before Day、その他のほとんどの国では Day before Month です。

編集:

上記の参照は必ずしも信頼できるものではないことを他の人が指摘したため、これはECMAScript 仕様からどうですか:

15.9.5.2 Date.prototype.toString ( )

この関数は文字列値を返します。String の内容は実装に依存しますが、現在のタイム ゾーンの Date を人間が判読できる便利な形式で表すことを目的としています。

15.9.5.5 Date.prototype.toLocaleString ( )

この関数は文字列値を返します。文字列の内容は実装依存ですが、ホスト環境の現在のロケールの規則に対応する便利で人間が読める形式で、現在のタイム ゾーンの日付を表すことを目的としています。

ほとんどの実装が仕様を反映していると想定できるので、相違点は、toString()読み取りtoLocaleString()可能であることが必要であり、ロケールに基づいてユーザーの期待に一致する形式で読み取り可能である必要があるということです。

于 2012-08-14T03:13:40.637 に答える
5

オペレーティング システムのロケールの規則を使用して、日付を文字列に変換します。

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleString

オペレーティング システムが適切にフォーマットしない年を変換する場合、toLocaleString は toString と同様に動作します。

于 2012-08-14T03:15:04.463 に答える
2

Chrome のコンソールで日付を確認したところ、プレゼンテーション形式の違いが見つかりました。これが役立つことを願っています。

var d = new Date();

console.log(d.toLocaleString()); //"04.09.2016, 15:42:44"
console.log(d.toString());       //"Sun Sep 04 2016 15:42:44 GMT+0300 (FLE Daylight Time)"
于 2016-09-04T12:46:01.250 に答える
1

多くの参照がありますが、信頼できるものはありません。Mozillaのドキュメントは、ブラウザ用のECMAScriptのバージョンであるJavaScriptに関するものであることに注意してください。他のブラウザは他の実装を使用するため、MDNドキュメントは便利ですが、信頼できるものではなく(コミュニティウィキでもあるため、公式のMozillaドキュメントでさえありません)、必ずしも他のブラウザに適用されるわけではありません。

決定的なリファレンスはECMAScript言語仕様であり、Date.prototype.toStringDate.prototype.toLocaleStringの両方の動作がブラウザーに依存しない用語で説明されています。

注目すべきは、両方のメソッドで、文字列は実装に依存します。つまり、ブラウザが異なれば、返される文字列も異なります。

于 2012-08-14T03:55:58.517 に答える