【发布时间】:2018-11-24 22:30:13
【问题描述】:
我正在像这样从服务器获取纪元时间值列表
response = [[1317888000000, 372.5101, 375, 372.2, 372.52],
[1317888060000, 372.4, 373, 372.01, 372.16],
[1317888120000, 372.16, 372.4, 371.39, 371.62],
[1317888180000, 371.62, 372.16, 371.55, 371.75],
[1317888240000, 371.75, 372.4, 371.57, 372],
[1317888300000, 372, 372.3, 371.8, 372.24],
[1317888360000, 372.22, 372.45, 372.22, 372.3],
[1317888420000, 372.3, 373.25, 372.3, 373.15],
[1317888480000, 373.01, 373.5, 373, 373.24],
[1317888540000, 373.36, 373.88, 373.19, 373.88],
[1317888600000, 373.8, 374.34, 373.75, 374.29],
[1317888660000, 374.29, 374.43, 374, 374.01],
[1317888720000, 374.05, 374.35, 373.76, 374.35],
[1317888780000, 374.41, 375.24, 374.37, 374.9],
[1317888840000, 374.83, 375.73, 374.81, 374.96],
[1317888900000, 374.81, 375.4, 374.81, 375.25],
[1317888960000, 375.2, 375.7, 375.14, 375.19],
[1317889020000, 375.43, 375.43, 374.75, 374.76],
[1317889080000, 374.94, 375.5, 374.81, 375.13],
[1317889140000, 375.12, 375.48, 375, 375.04],
[1317889200000, 375.24, 375.24, 375, 375.08],
[1317889260000, 375.16, 375.16, 374.51, 374.51],
[1317889320000, 374.51, 374.75, 374.2, 374.27]]
在此,有些纪元值也像同一天,同一月和同一年,但时间有所不同。例如
1317888000000 = Thursday, October 6, 2011 8:00:00 AM
1317900000000 = Thursday, October 6, 2011 11:20:00 AM
1317920000000 = Thursday, October 6, 2011 4:53:20 PM
我的要求是,如果我得到新一天的值然后在我的图表中,那么我将在图表中添加一个新点,但如果新值是同一天但不同的时间,那么我会用新值和新时间更新同一天的值。
类似
var last = this.chart.series[0].lastValue;
if(//last is of same day but different time){
//update the last value
} else {
//add the new value
}
那么有什么方法可以检查纪元时间是否属于同一天。我使用new Date(1317888000000).getDay() 进行了尝试,但它不能正确满足要求,因为如果即将到来的值是下个月的同一天。它将更新最后一个而不是添加新值。我应该在 if 循环中写入什么条件,以便它可以检查图表中添加的最后一个值以及新值是否属于同一天。
【问题讨论】:
-
“同一天”在哪个时区?
-
只需比较
getDay、getMonth和getFullYear? -
@Phil 其实我对时区不太了解。我正在使用 highcharts,因此它直接接受带有值的纪元时间。现在我的要求已更改为检查同一天的值。如果我们将其转换为 ISO 字符串或语言环境日期会怎样。有什么办法吗?
-
@JonasW。我有很多值,接近 60000+ 并不断增加。这是检查同一天价值的好方法吗?我是从性能的角度来问的。
-
@YashJain 与渲染图表相比,过滤大数据数组将是沧海一粟
标签: javascript epoch