javascript - HighCharts 显示错误的月份

标签 javascript highcharts

我目前正在使用 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/

相关文章:

javascript - Highcharts 条形图 - 标签未出现在条形图中

javascript - 颜色框 iframe 调整大小

javascript - 在 React 中通过嵌套组件向上传递数据

javascript - Flask webservice 的 HighCharts 查询参数问题

javascript - 当鼠标光标位于使用 highcharts 的图表上时如何渲染垂直线?

javascript - Highchart 工具提示定制

javascript - 如何在切换仪表板过滤器后更新 Tableau 扩展 API 图表?

javascript - 动画 JSON 网格上的 Three.js SpotLight 类

javascript - WebkitTransform 不流畅

javascript - 在同一页面上使用 Highstock 和 Highchart-Gantt