2011-06-29 4 views
1

私のJSONは、私は私のJavaScriptの日付時刻オブジェクトにこれを変換するにはどうすればよいこのは、JavaScriptオブジェクトにJSONのdatetimeオブジェクトを変換

"/Date(1307514780000+0530)" 

としてオブジェクトを返しますか? また、+0530の意味は? 「私のJSON」と

+1

+0530は、グリニッジ標準時より5時間30分先のあなたのタイムゾーンです。それ以外の部分はUNIXエポック時間(1970年1月1日からのミリ秒)です。 –

+0

PHPのDateTimeオブジェクトを送信しようとしていますか?これはあなたを助けるかもしれません:http://stackoverflow.com/questions/1428598/can-a-json-object-returned-by-php-contain-a-date-object –

+0

これは完全な応答ですか? – wong2

答えて

6

、私は、Microsoft ASP.NETは、あなたが書かれていないとして、日付時刻オブジェクトを渡す方法に言及していると推測、しかし最後にもスラッシュ:

/Date(1307514780000+0530)/ 

JSONはネイティブJavaScriptの日()タイプをサポートしていませんので、これは実際には、単純なJSON文字列ですが、Microsoftは、もう少しそれをハッキングし、実際にこの送信:

\/Date(1307514780000+0530)\/ 

をそして、それが許されていますJSON文字列の場合は、バックスラッシュ必要はありません。 (2つの文字列はJSONクライアントソフトウェアと同じですが、Microsoft JScriptがこれらのバックスラッシュを見ると特別な構造として扱われます)。

記号の前の値「 - 」でもかまいません)は、1970-01-01 00:00:00 UTC以降のミリ秒数です。符号とその値はプレゼンテーションタイムゾーンを表します。この値は、ネイティブJavaScript Date()オブジェクトに値を変換する必要はありません。記号は、時間帯がUTCの前か後( - )かを示し、「HH」は時間数、「MM」は分数を表します。

Date()オブジェクトに変換するには、標準のクロスブラウザ対応のJavaScriptを使用してください(この例では、「+0530」はインド標準時と同じタイムゾーンオフセット、別名「IST」です)。 :

function getDateFromAspString(aspString) { 
    var epochMilliseconds = aspString.replace(
     /^\/Date\(([0-9]+)([+-][0-9]{4})?\)\/$/, 
     '$1'); 
    if (epochMilliseconds != aspString) { 
     return new Date(parseInt(epochMilliseconds)); 
    } 
} 

文字列がASP.NETの日時文字列でない場合、この関数は何も返しません。 の結果を未定義のと比較(===)して、返されたものがあるかどうかを調べることができます。私のブラウザで

、この呼び出し:

getDateFromAspString("/Date(1307514780000+0530)/").toString() 

戻り、この文字列:

"Wed Jun 08 2011 01:33:00 GMT-0500 (Central Daylight Time)" 

も参照してください:

関連する問題