1

ウィキペディアのISO-8601の記事によると(私は知っている、悪い情報源)...

時間表現でUTC関係情報が指定されていない場合、時間は現地時間であると見なされます。

したがって、たとえば..与えられた:

  • var a = Date.parse( "2012-03-21");
  • var b = Date.parse( "2012-03-21T00:00");
  • var c = Date.parse( "2012-03-21T00:00Z");

「a」と「b」は現地時間(ブラウザのタイムゾーン)であり、「c」はUTCであると思います。ただし、a、b、およびcはすべて同等です(1332288000000)。すべての値はUTCとして解析されます。

ECMAScript仕様には、次のことも明確に記載されています。

15.9.1.15日時文字列形式

不在のタイムゾーンオフセットの値は「Z」です。

なぜこの不一致があるのですか?ウィキペディアは正しくありませんか、それともECMAScriptの仕様ですか?(ブラウザのタイムゾーンを知らなくても)ブラウザでISO-8601文字列を現地時間にどのように解析しますか?

4

2 に答える 2

2

はい、ES5.1 は正しくありません。

ECMAScript 6 ドラフトでは、「タイム ゾーン オフセットがない場合、日時は現地時間として解釈される」と記載されています。

于 2015-01-18T00:08:37.827 に答える
1

ISO-8601 文字列をブラウザーで (ブラウザーのタイム ゾーンを知らずに) 現地時間に解析するにはどうすればよいでしょうか。

toLocaleStringこれを行うには、次のメソッドを使用します。

var foo = new Date("2012-03-21").toLocaleString()
var bar = new Date("2012-03-21T00:00").toLocaleString()
var baz = new Date("2012-03-21T00:00Z").toLocaleString()

参考文献

于 2014-02-13T01:46:16.313 に答える