Javascript Chart.js时间刻度不显示数据

Javascript Chart.js时间刻度不显示数据,javascript,time,chart.js,Javascript,Time,Chart.js,我有一个图表显示得很好,直到我添加了一个。配置如下所示: this.chart = new Chart(this.ctx, { type: 'line', data: data, options: { legend: { display: false }, scales: { xAxes: [{

我有一个图表显示得很好,直到我添加了一个。配置如下所示:

    this.chart = new Chart(this.ctx, {
        type: 'line',
        data: data,
        options: {
            legend: {
                display: false
            },
            scales: {
                xAxes: [{
                    type: 'time',
                    time: {
                        unit: 'month',
                        format: 'timeFormat'
                    }
                }]
            }
        }
    });
let data = {
    labels: ["1485903600", "1490738400"],
    datasets: [{
        label: '',
        data: [120, 30],
        lineTension: 0
    }]
};
数据
对象如下所示:

    this.chart = new Chart(this.ctx, {
        type: 'line',
        data: data,
        options: {
            legend: {
                display: false
            },
            scales: {
                xAxes: [{
                    type: 'time',
                    time: {
                        unit: 'month',
                        format: 'timeFormat'
                    }
                }]
            }
        }
    });
let data = {
    labels: ["1485903600", "1490738400"],
    datasets: [{
        label: '',
        data: [120, 30],
        lineTension: 0
    }]
};

x轴正确显示两个日期,y轴以正确的限值(即120和30)为界,但是数据没有显示在图表上。

转换到时间刻度时,图表没有显示数据的原因是,您正在为标签传递字符串值,而
日期
构造函数无法解析该字符串值

时间刻度需要一个整数(从历元开始的毫秒数)、一个
Date
对象、一个
矩.js
对象,或者一个日期的字符串表示形式,其格式是
Date.parse()
可以理解的

因此,在您的情况下,当图表呈现时,它无法为X轴创建
Date
对象(因为您的标签值),因此它使用
new Date()
(这就是为什么X轴仍然显示一些日期数据…请注意,它是2017日期,因为
new Date()
返回一个
日期
初始化为立即)

要纠正这一点,只需将标签值转换为整数(例如,删除引号),图表就会显示您的数据点。但是,该图表看起来仍然很有趣,因为X刻度是以月为单位配置的,但数据值仅相隔一天(1485903600=1970年1月17日10:45下午和1490738400=1970年1月18日12:05上午)


这是一个显示您的原始图表和正确图表的列表,以便您可以看到差异。

感谢您的回复。将它们转换为整数确实会使它们按您所说的那样工作。但我很困惑,因为1485903600应该是2017年2月1日,根据它的说法。为什么它在图表上显示为1970年1月17日?这是因为希望接收自历元以来的毫秒数(1485903600是秒数)。因此,当您在标签中使用整数时,这些整数在日期构造函数中用于创建新的日期,由于日期构造函数预期的是毫秒,因此它会生成一个意外的日期值。是的-我乘以1000,就得到了我想要的日期。谢谢。这是一个非常好的答案。解释性和简洁性。我喜欢,谢谢。