1

Firefox からの奇妙な結果のように見えるものに遭遇しました。次の形式を使用します。

2013/01/01 00:00:00-0000

私の日付では、タイムゾーンが「正」になると問題が発生します。例えば。

new Date('2013/01/01 05:00:00-0000')
Date { Tue Jan 01 2013 00:00:00 GMT-0500 (EST) }

しかし。

new Date('2013/01/01 05:00:00+0100')
Date { Invalid Date }

私はむしろ得ることを期待します:

日付 { 2012 年 12 月 31 日月曜日 23:00:00 GMT-0500 (EST) }

GMT より東のタイムゾーンを使用できない場合、これ+はかなり大きな問題のようです。

編集: http://jsfiddle.net/utm4f/を追加しました

Firefox で実行すると、無効な日付が返されます (OS X 10.8.3 で Firefox 20 を実行しています)

4

2 に答える 2

0

代わりに、次のような ISO8601 値を使用することをお勧めします。

2013-12-31T01:23:45-07:00

ISO 日付の解析は、すべての新しいブラウザーで機能しますが、一部の古いブラウザー、特に IE8 では失敗します。これに対するブラウザー サポートの優れた説明がここにあります。また、古いブラウザー サポートの shim もあります。

しかし、さまざまなブラウザーでのすべての矛盾を本当にサポートしたい場合、最善の方法 (IMHO) はmoment.jsを使用することです。

var m = moment('2013-12-31T01:23:45-07:00');

または、明示的な解析文字列を使用して、他の形式を使用することもできます。

var m = moment('2013/01/01 00:00:00-0000', 'YYYY/MM/DD HH:mm:ssZZ');
于 2013-05-13T18:59:34.447 に答える
0

まあ、私はそれにできることは何でも投げて問題を見つけました。どうやら Firefox では、時刻とタイムゾーンの間にスペースが必要です。

new Date('2013/01/01 05:00:00 +0100')
new Date('2013/01/01 05:00:00 -0100')

-スペースがなくてもタイムゾーンはエラーになりませんが、スペースはエラーになり+ます。

于 2013-05-13T17:53:38.593 に答える