【问题标题】:Highcharts Date.UTC does not work properly for real dataHighcharts Date.UTC 不适用于真实数据
【发布时间】: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


【解决方案1】:

我刚刚意识到我在推送功能上犯了一个小错误。在 series.push 中,'data' 应该是这样的,用数组括号括起来:

data: [
   [ Date.UTC(parseInt(yearsplit[0]), parseInt(datesplit[1])-1, parseInt(datesplit[0])), 1]
   ]

【讨论】:

    猜你喜欢
    • 2018-09-06
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 2013-01-06
    相关资源
    最近更新 更多