2016-06-23 9 views
1

問題の説明 マシンがあり、マシン上でいくつかの統計情報の収集を実行する(のがクライアントは言わせて)(のはテスト(SUT)の下システムを呼びましょう)。 統計はSUTで収集されるため、ミリ秒は1つのタイムゾーンからのものであり、クライアントのタイムゾーンは異なります。サンプル時間をjsでシステム時間を一定に保つにはどうすればいいですか?

AMChartを使用してグラフにプロットしたときのこれらの統計は、このようになります。 Look at it

AMChartを使用してグラフをプロットします。グラフにはサンプルが必要で、ミリ秒単位で表示されます。グラフは日付をプロットして解析し、解析はミリ秒をDateコンストラクタに渡します。

このような状況が発生した場合は、システムの時刻を変更してから変更するまでは、すべて正常に機能します。

new Date(samples[ith-sample]); 

サンプルの時間は、システムの時間に関係なく一定に保つことができます。

語彙

オフセット:は、私はサンプルが収集されたマシンとコレクションをトリガし、マシン間で維持する必要が時間差です。 時差は3時間30分1秒です

まだ試したことはありますか?

var curDate = new Date(); 
var targetDate = new Date(curDate.getTime() - offset *1000); 
sampleData[0] = targetDate; 
+0

最初に、タイムゾーンを取得し、それに応じてオフセットを減算することです。 – binariedMe

+0

私は、Dateコンストラクタを使用してtargetDateを取得したので、返された日付は常に受け入れられた時間差(この場合は3時間:30分:1秒)から逸脱します。 – cafebabe1991

+0

サンプルを収集するコードを制御できますか? –

答えて

1

あなたが時間を節約することができ、サンプルの収集を開始するとき、あなたは最初からだけの時間距離を保存、すべてのサンプルからその数を引くでしょう。そうすれば、タイムゾーンや実際の時間に関係なく距離を比較するだけです。例:

var samplingStartTime = Date.now(); 
function collectSample(){ 
    return Date.now() - samplingStartTime; 
} 

次に、グラフは0から始まる線形時間スケールになります。

チャートで実際の日付を使用したい場合は、任意の時点で初期日付を設定し、その日付+時間軸の各サンプル値を使用することができます。

+0

さて、私は試しています.... – cafebabe1991

+0

私はあなたの2番目のアプローチ(実際の日付)について考えていました。あなたが言ったことをすれば、サンプリング中に私は開始日のタイムスタンプを保存し、それをフロントエンドに戻す必要があります(グラフをプロットする場所)。開始時刻が来たら、システムの時間に関係なく、希望する日付を与える各サンプルを追加し続けるだけです。 それはあなたが暗示したものですか? – cafebabe1991

+0

私は、フロントエンド、クライアント、SUT、そしてあなたが描いているそれぞれのマシンが果たしている役割について混乱しています。外から見ることは難しいです。しかし、コンセプトは、時間の距離(日付ではなく)としてサンプルを取得したら、必要な開始点から一貫してプロットすることができるということです。あなたの出発点が、クライアントでサンプリングを開始した日付であれば、はい、その日付を取得して使用する必要があります... –

関連する問題