2

json から日付を抽出する必要があります:

/Date(1224043200000)/ 

それができることを見ました:

var date = new Date(parseInt('/Date(1224043200000)/'.substr(6))); 
                                    ^
                                    |
------------------------------0123456

substrしかし、最後の文字を無視することをどのように知っていますか? [)/]

mdnで検索しましたが、文書化された動作が見つかりませんでした。

4

3 に答える 3

4

.substr()6文字目以降はすべて返します。

ただしparseInt()、数値以外の文字に達するまですべての数値文字を解析するため、無視は次のように行われます。parseInt


ドキュメントの引用

parseInt指定された基数の数字ではない文字に遭遇した場合、それと後続のすべての文字を無視し、その時点までに解析された整数値を返します。parseInt数値を整数値に切り捨てます。先頭と末尾のスペースは許可されます。

于 2012-09-19T07:47:11.117 に答える
2

これを試して:

var date = new Date(parseInt('/Date(1224043200000)/'. substring(6, indexOf(")")-1 )); 
于 2012-09-19T07:49:39.947 に答える
2

私はこれについて別の方法で行きます。Gaby は parseInt について説明しましたが、注意parseInt点として、先行ゼロの整数を 8 進数として解釈します。これはあなたの場合には当てはまらないかもしれませんが、IMO、これはより安全なアプローチです:

var date = new Date(+('/Date(1224043200000)/'.match(/\d+/)[0]));

最初に'/Date(1224043200000)/'.match(/\d+/)、配列内の文字列から数値を抽出します: ["1224043200000"].
次に、これらの一致の最初の要素が必要になるため、[0].
安全のために、これらすべてを括弧で囲み、前に+記号を付けて、一致する部分文字列を数値に強制します。+('/Date(1224043200000)/'.match(/\d+/)[0]) === 1224043200000
これはコンストラクターに渡され、文字列値としてのDate日付オブジェクトが作成されます。"Wed Oct 15 2008 06:00:00 GMT+0200 (Romance Daylight Time)"

起こりうるエラーをキャッチするために、このワンライナーを少し分割したいかもしれませんが、それはあなた次第です:)

于 2012-09-19T07:59:53.443 に答える