2012-02-21 5 views
0

JSONやJavaScriptの高解像度タイムスタンプを表現する方法はありますか?JSON/JavaScriptの高解像度日時表現

理想的には、私は(.NET日時分解能が同様に100  ナノ秒であるため)ことは、サーバ・コードはビットより簡単になるだろうので、それは、少なくとも100  ナノ秒の解像度をサポートしたいと思います。

高解像度のタイマーなどの操作に関する問題がたくさんありましたが(これは明らかに不可能です)、アプリケーションAPIで何らかの形で表現する必要があります。

これはJSONを使用してRESTスタイルで構築されたAPIのため、実際にを測定するこの解像度の時間を測定する必要はありません。しかし、タイムスタンプを完全な解像度(10  ns、これは.NETなので)で(潜在的にJavaScriptで)転送して使用したいと思います。

答えて

3

あなたの明確化の観点から、あなたのタイムスタンプは本当に大きな整数ではありませんか?現在のタイムスタンプは1329826212です。ナノ秒の精度が必要な場合は、ちょうど9桁の数字のようなものです:1329826212000000000これはJavaScriptが簡単に処理できる数値です。

myobject = { 
    "time": 1329826212000000000 
} 

次のように送信してください。私はちょうどそれにいくつかの算術演算をやってみました、多数の除算と同じ乗算。価値の損失はありません。

JavaScriptは膨大な数の浮動小数点数をサポートしますが、-2^53 to 2^53から整数精度を保証します。だから私はあなたが良いと思う。

更新 申し訳ありません、あなたの質問を再読しました。あなたはそれを表現したいですか?さて、私が考えることの1つは、最後の9桁(2番目の粒度を超える追加の精度)を抽出し、数値の小数部にすることです。最後の6桁のデータを抽出することもできます(ミリ秒単位の精度を超える追加の精度)。

+0

ありがとう、私は普通の古い整数を使うことを考えていましたが、共通の合意された解決策がすでにあるかどうかは分かりませんでした。整数はうまくいく:) –

2

JavaScript Date objectの精度はミリ秒です。

小数ものいずれかに添加することができる。

しかし、あなただけのナノ秒の精度の時間をエンコードするための標準フォーマットを探しているなら、ISO 8601 format stringでは、秒の端数としてナノ秒を定義することができます3つの時間要素。小数点はカンマかドット(2003年の第22回総会CGPMの決議10に最近記載されたような優先度なし)であり、時間要素とその分数の間のセパレータとして使用される。小数は、表現の最下位時間要素にのみ追加することができます。 「14時間30分」を表すには、秒の数字を含めないでください。 「14:30,5」、「1430,5」、「14:30.5」、または「1430.5」と表示します。小数点以下の桁数には制限がありません。しかし、小数点以下の桁数は通信相手によって合意される必要があります。


Javaのナノ秒のタイマーを公開する小さなJavaアプレットを使用していますjsperf.combenchmarkjs.comが使用するトリックがあります。

スタックオーバーフローの質問Is there any way to get current time in nanoseconds using JavaScript?を参照してください。

+1

私はタイムスタンプを転送するだけで、実際にはJavaScriptで何も測定しないので、これは質問に答えません。問題を明確にしました。 –

+1

ISO8601形式は良い解決策です。私はおそらく整数で行くでしょう。なぜなら、使用するのが少しシンプルなように見えます。この場合、人間の可読性は重要ではありません。 –

関連する問題