2011-01-03 14 views
2

以下の文字列がJSON形式のレスポンスオブジェクトから返され、便利なものに解析したいと思います:/ Date(1283457528340)/このJSON datetimeはどのように変換しますか?

私はJavaScriptを使用してユーザーフレンドリーなものをどのように解析しますか?

+0

あなたがそのポストで他の有用な詳細を提供することができますか?これはUnixのタイムスタンプですか?それはUTCエンコードされているため、現地時間に変換する必要がありますか?それは本当にその特定の文字列 '/ Date(...)/'として戻ってくるのですか?数字を解析する必要がありますか? – jcolebrand

答えて

5

これはエポックからのミリ秒数です。

この関数は、文字列から数値を抽出し、その数値から作成されたDateオブジェクトを返します。例えば

function dateFromStringWithTime(str) { 
    var match; 
    if (!(match = str.match(/\d+/))) { 
     return false; 
    } 
    var date = new Date(); 
    date.setTime (match[0] - 0); 
    return date; 
} 

console.log(dateFromStringWithTime('/Date(1283457528340)/').toString()); 

出力は次のようになります。

Fri Sep 03 2010 02:58:48 GMT+0700 (ICT) 
+0

標準によって私たちが省略することができるにもかかわらず、絶対的な互換性を維持するために 'if'文の結果ブロックの周りに中括弧(' {}) 'を維持することが望ましいです。 –

+0

提案していただきありがとうございます。 :) – Thai

+0

CHAMPのように働いた!ありがとう! –

1

に依存します。その価値は何を表していますか? UNIXのタイムスタンプのミリ秒(それ以外の場合)を仮定すると、値を抽出してからparseIntを適用し、新しいDateオブジェクトを構築することができます。

var str  = "/Date(1283457528340)/"; 
var matches = str.match(/([0-9]+)/); 
var d  = parseInt(matches[0]); 
var obj  = new Date(d); 

通常、Dateオブジェクトをそのまま使用することができます。 これはテストされておらず、誤植/バグがあるかもしれませんが、そのアイデアは健全でなければなりません。

編集:matches[1] - >matches[0]

+2

ここでは、検証やエラー処理を行っていないことにも注意してください。 –

関連する問題