Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在js中保持我的样本时间恒定于系统时间?_Javascript_Date_Amcharts - Fatal编程技术网

Javascript 如何在js中保持我的样本时间恒定于系统时间?

Javascript 如何在js中保持我的样本时间恒定于系统时间?,javascript,date,amcharts,Javascript,Date,Amcharts,问题描述 有一台机器(比如说客户端)在一台机器上执行一些统计数据收集(我们称之为测试中的系统(SUT))。 统计数据是在SUT上收集的,因此毫秒来自一个时区,并且客户端具有不同的时区 使用AMCharts在图表上绘制时,这些统计数据如下所示。 我使用AMCharts绘制一个图表。图表需要样本,这些样本以毫秒为单位。该图将绘制和解析日期,解析涉及将毫秒传递给日期构造函数 当这种情况发生时,一切都很好,直到我继续改变我的系统的时间。样本在刷新时也会更改,因为它使用 new Date(samples

问题描述 有一台机器(比如说客户端)在一台机器上执行一些统计数据收集(我们称之为测试中的系统(SUT))。 统计数据是在SUT上收集的,因此毫秒来自一个时区,并且客户端具有不同的时区

使用AMCharts在图表上绘制时,这些统计数据如下所示。

我使用AMCharts绘制一个图表。图表需要样本,这些样本以毫秒为单位。该图将绘制和解析日期,解析涉及将毫秒传递给日期构造函数

当这种情况发生时,一切都很好,直到我继续改变我的系统的时间。样本在刷新时也会更改,因为它使用

new Date(samples[ith-sample]);
如何在不考虑系统时间的情况下保持采样时间恒定

词汇表

偏移量:是采集样本的机器和触发采集的机器之间必须保持的时间差。 在图中,时差为3小时30分1秒

我试过什么了?


当您开始收集样本时,您可以节省时间,然后您可以从每个样本中减去该数字,仅节省从开始到结束的时间距离。这样的话,你只是在比较距离,而不管时区,甚至是实际时间。例如:

var samplingStartTime = Date.now();
function collectSample(){
    return Date.now() - samplingStartTime;
}
然后你的图表将是一个从零开始的线性时间刻度


如果您仍然希望在图表上使用实际日期,可以在任何时间点设置初始日期,然后使用该日期+时间轴的每个样本值。

首先要得到时区,然后减去相应的偏移量。我这样做了,但因为我使用日期构造函数得到了targetDate,所以返回的日期总是偏离接受的时差(在本例中为3hr:30min:1sec)您可以控制采集样本的代码吗?@HugoSilva是的,我可以,样本是在csv文件中采集的。我认为将所有时间(源和目标)更改为GMT或特定时区应该可以解决这个问题。我认为您应该尝试将新日期(sample[ith sample])的输出更改为GMT,并保存sampleData[0]=ConvertToGMT(targetDate);我在考虑你的第二种方法(实际日期)。如果我按照你说的做,那么在采样过程中,我必须存储开始日期时间戳,并将其返回到前端(在那里我绘制图形)。一旦我有了开始时间,我会继续添加每个样本,无论系统的时间如何,这些样本都会给出我想要的日期。这就是你所暗示的吗?我对前端、客户端、SUT以及你描述的每台机器所扮演的角色感到困惑。从外面看很难理解。但其概念是,一旦您将样本作为时间距离(而不是日期),就可以从您想要的任何起点始终如一地绘制。如果您的起点是开始在客户机上采样的日期,那么是的,您应该检索并使用该日期。。。
var samplingStartTime = Date.now();
function collectSample(){
    return Date.now() - samplingStartTime;
}