1

次の文字列があります: "2012-12-10T23:40:41Z"

私の目標は、その日を数値(0-6)として取得することです... sun-sat

この文字列を次のように渡します。

var input = "2012-12-10T23:40:41Z";
var day = new Date(input).getDay();
alert(day);

これはChromeでは問題なく機能しますが、Adobe Air Webkitビューでは、「InvalidDate」というエラーが表示されます。

古いブラウザでサポートされている日を取得する方法を見つけるための提案はありますか?

4

3 に答える 3

4

ES5 より前は、日付を解析する標準的な方法はありませんでした (各ホストは独自の解析方法を実装していました)。ES5 以降、strict モードで解析できるようにするには、日付を ISO8601 形式にする必要があります。

移植性を最大限に高めるには、日付を手動で解析する必要があります。

于 2012-12-11T01:44:44.817 に答える
0

以上がコメントです。

JavaScript ISO8601 日付文字列を手動で解析するには、それを部分に分割して日付コンストラクタに渡します。JavaScript の日付文字列は常に UTC (Z) である必要があることに注意してください。

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

必要に応じて、文字列と結果の日付オブジェクトを検証するために、上記にさまざまな機能を追加できます。

ES5 によると、無効な日付文字列Date.parse(例: 2012-12-00) は を返す必要NaNがありますが、一部のブラウザーは 2012-11-30 の日付オブジェクトを作成することに注意してください。上記は無効な文字列の日付オブジェクトを返すため、仕様との一貫性が必要な場合:

function parseISOdateString(s) {
  s = s.split(/\D/);
  var d = new Date(Date.UTC(s[0], --s[1], s[2], s[3], s[4], s[5]))
  return (d.getUTCFullYear() == s[0] && d.getUTCDate() == s[2])? d : NaN;
}

NaN「2012-12-00」のような無効な文字列に対して返されます

于 2012-12-11T02:34:18.870 に答える
0

このページは少し古いですが、役に立つはずです。問題は、ISO 8601 スタイルの日付が Javascript 1.8.5 でしかサポートされていないことです。

于 2012-12-11T01:47:55.670 に答える