0

FFとChromeで有効なタイムスタンプを生成する次の行があります。

new Date('2012 11 2 00:00:00 GMT').getTime();

ただし、IE9ではNaNを取得します。この行をクロスブラウザ互換にするために、別の方法で何をする必要がありますか?

4

2 に答える 2

1

使用している日付形式はEMCAscript仕様に準拠している必要があります。これは、FirefoxとChromeが解析に対してより寛容であるということです。

形式は次のとおりです。

YYYY-MM-DDTHH:mm:ss.sssZ

だからこれを試してみてください:

new Date('2012-11-02T00:00:00.000Z').getTime()

これは、古いバージョンのIEでは機能しません。完全な互換性が必要な場合は、他の回答を参照してください。

于 2012-11-02T04:03:09.050 に答える
1

文字列を日付に変換する唯一の信頼できる方法は、手動で解析することです。ライブラリを使用することもできますが、使用するものは何でも形式を知っている必要があるため、通常は自分で行う方が簡単です。

'2012 11 2 00:00:00 GMT'(ISO8601に準拠していないため、解析は実装に依存します)の場合、タイムゾーンが常にUTCである場合は、次を使用できます。

function stringToDate(s) {
  var b = s.split(/\D/);
  return new Date(Date.UTC(b[0], --b[1], b[2], b[3], b[4], b[5]));
}

結果の日付オブジェクトには、クライアントのシステム設定に基づいたタイムゾーンオフセットがあります。これは正しいはずですが、正しくない場合があります。

于 2012-11-02T04:27:50.577 に答える