0

データベースから取得した変数を使用して日付オブジェクトを作成しようとしています。文字列はすでに正しい形式で、カンマ区切りの "yyyy,mm,dd,hh,mm,ss" になっています。ただし、Date オブジェクトを作成しようとすると、Invalid Date エラーが返されます。

var foo ='2012,03,09,12,00,00,00';
document.write(foo); //<-- obviously writes the string 2012,03,09,12,00,00,00 to the browser
var then=(new Date(foo));
document.write(then); //<-- returns Invalid Date

次のような解決策があります。

var x = foo.split(/[,]/);
var then = new Date(x[0], x[1], x[2], x[3], x[4], x[5]);

基本的に渡されたのと同じ文字列を再作成しているときに、なぜこれが必要なのか疑問に思っています。

4

2 に答える 2

2

これは、Date オブジェクトに変換しようとしている文字列が無効であるためです。Date オブジェクトは、任意の形式を文字列として受け入れるだけではありません。認識されない場合は機能しません。

日付ドキュメントを参照してください https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

サポートされているフォーマットに関する情報はこちら

https://www.rfc-editor.org/rfc/rfc2822#page-14

于 2012-05-01T16:48:12.137 に答える
1

"yyyy,mm,dd,hh,mm,ss"日付文字列の「正しい形式」ではありません。

JavaScriptDateオブジェクトは、特定の形式のみを解析できます。Date有効なdateStrings については、MDN ドキュメントを確認してください。https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

ともかく。2番目の例は、文字列を再作成していないため機能します。1つの長いパラメーターと比較して、6つの異なるパラメーターを渡しています。

コンマ区切りの文字列を関数に渡して、それがパラメーターに分割されることを期待することはできません。そのようには機能しません。

于 2012-05-01T16:47:58.027 に答える