我目前正在使用 HighCharts 将一些数据嵌入到我的用户界面中,显示过去 7 天的销售利润,这是我当前使用的 Javascript:
function weeks_ago(date_object) {
var d = new Date();
var newDate = d.setDate(d.getDate()-6);
var date = new Date(newDate);
return date.getDate();
}
var d = new Date();
function createGraph(jsonObj) {
$('#container').highcharts({
credits: {
enabled: false
},
chart: {
type: 'line'
},
title: {
text: 'Profit Graph'
},
subtitle: {
text: 'Data from the past week'
},
xAxis: {
type: "datetime",
dateTimeLabelFormats: {
month: "%e. %b",
year: "%b"
}
},
yAxis: {
title: {
text: 'Profit'
},
min: 0
},
tooltip: {
formatter: function() {
return '<span style="color:#33333;">'+this.series.name +': '+ Highcharts.numberFormat(this.y,0);
}
},
series: [
{
name: 'Platform1',
data: jsonObj.Platform1,
pointStart: Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), weeks_ago(new Date())),
pointInterval: 24 * 3600 * 1000,
color: '#55CCA2',
}, {
name: "Platform2",
data: jsonObj.Platform2,
pointStart: Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), weeks_ago(new Date())),
pointInterval: 24 * 3600 * 1000,
color: '#3498db',
}
]
});
};
我的 jsonObj
数组包含以下内容:
{"Platform1":[0,0,0,14580,105585,75410,19212],"Platform2":[0,0,0,0,0,0,0]}
但由于某种原因,我的图表显示从 10 月 30 日到 11 月 5 日?数据点位于正确的位置,只是 xAxis 标签错误。
最佳答案
您的函数 weeks_ago
返回 6 天前的日期。但是当您设置pointStart
时,您仅设置日期,而不是月份和年份。所以今天你有以下内容:
Today: 2017 10 06
Today - 6 days = 2017 09 30
You set pointStart = Date.UTC(2017, 10, 30).
因此,如果您创建返回月份和年份的新函数,您就可以使其工作。
或者更改它,以便 weeks_ago
返回日期对象,如下所示:
function weeks_ago(date_object) {
var d = new Date();
var newDate = d.setDate(d.getDate()-6);
return new Date(newDate);
}
pointstart: Date.UTC(weeks_ago(new Date()).getUTCFullYear(),
weeks_ago(new Date()).getUTCMonth(),
weeks_ago(new Date()).getDate())
关于javascript - HighCharts 显示错误的月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46598925/