【发布时间】:2019-09-24 21:28:27
【问题描述】:
我已经构建了这样的东西。我从服务器获取数据,将其放入一个名为系列的对象中,然后将其传递给 Highcharts 代码块中的“系列”。基本上,对于每个员工,都会有一个日期,我的默认值(Y 轴)现在是“1”。但是,即使看起来我有正确的数据并进行了正确的解析,我也无法按预期在图表上获得日期。出乎意料的是,我将毫秒值作为 Y 轴值,这没有任何意义,而且每个员工都有一个默认日期,即 1 月 1 日。 (例如,员工 1,1 月 1 日,x 轴值 = 1554422400000)
我得到这样的日期,19-02-2019 17:32。然后我把它们分开,像这样使用它, ([Date.UTC(parseInt(yearsplit[0]), datessplit[1]-1, parseInt(datesplit[0])), 1]) 在 Highcharts 中看起来完全一样的格式,([Date.UTC(1971, 2, 16), 0.86])
var responsePromise = $http.post('statistics/getAllProtocolRecords', data, null);
responsePromise.success(function (dataFromServer, status, headers, config) {
var series = [{
name: "",
data: []
}];
dataFromServer.protocolRecords.forEach((data) => {
var datesplit = data.checkupDate.split("-");
var yearsplit = datesplit[2].split(" ");
series.push({
name: data.staff,
data: [Date.UTC(parseInt(yearsplit[0]), datesplit[1]-1, parseInt(datesplit[0])), 1]
})
});
series.shift();
Highcharts.chart('container', {
chart: {
type: 'spline'
},
title: {
text: 'Toplam Muayene Kaydı (' + sysrefHcCheckupType + ')'
},
subtitle: {
text: ''
},
xAxis: {
type: 'datetime',
dateTimeLabelFormats: { // don't display the dummy year
month: '%e. %b',
year: '%b'
},
title: {
text: 'Tarih'
}
},
yAxis: {
title: {
text: 'Toplam Muayene (Gün)'
},
min: 0
},
tooltip: {
headerFormat: '<b>{series.name}</b><br>',
pointFormat: '{point.x:%e. %b}: {point.y:%f} '
},
plotOptions: {
spline: {
marker: {
enabled: true
}
}
},
colors: ['#00bdff', '#FF0700', '#df0300', '#ff0700', '#c0df00'],
series: series
});
});
【问题讨论】:
-
你试过你的
Date.UTC(parseInt(yearsplit[0]), datesplit[1]-1, parseInt(datesplit[0]))返回哪个纪元吗? -
尝试打开开发者工具(如果你想成为一名开发者,学习这一点非常重要)并使用断点等调试你的代码,这样你就可以知道运行时到底发生了什么。
-
它返回我这些值; 1550620800、1550534400、1550620800、1550620800
-
Highcharts 需要以毫秒为单位的值,即秒。如果您这样做
new Date(1550620800),您将看到实际发生的情况。你正在做的事情很奇怪,因为 Date.UTC 以毫秒为单位返回值,而你得到的是秒。
标签: javascript date highcharts