Google柱形图显示错误的日期

时间:2017-06-22 09:46:24

标签: html google-visualization

我正在研究谷歌列图表。我在生成图表时创建了3列。这些是列。

var dtblData = new google.visualization.DataTable();
dtblData.addColumn('string', 'Names');
dtblData.addColumn('datetime', 'Intime');
dtblData.addColumn('datetime', 'Outtime');

我正在使用以下数据在图表上显示。

  

[{" display_name":" Aditi Badurkar   #&34;,"的In_time" {"一年":2017,"一个月":6,"天":22,&# 34;小时":11,"分钟":7,"秒":8,"毫秒":470}" Out_time相当&#34 ;:{"一年":2017,"一个月":6,"天":22,"小时":12,&#34 ;分钟":45,"秒":44,"毫秒":237}}]

这是我的代码: -

google.charts.load('current', { 'packages': ['corechart', 'bar'] });
google.charts.setOnLoadCallback(drawStuff);

function drawStuff() {
    var chartDiv = document.getElementById('chart_div');
    var dtblData = new google.visualization.DataTable();
    dtblData.addColumn('string', 'Names');
    dtblData.addColumn('datetime', 'Intime');
    dtblData.addColumn('datetime', 'Outtime');

    for (var i = 0; i < data.length; i++) {
        if (data[i].out_time.year == 0) {
            dtblData.addRow([data[i].display_name, new Date(data[i].in_time.year, data[i].in_time.month, data[i].in_time.day, data[i].in_time.hours, data[i].in_time.minutes, data[i].in_time.seconds, data[i].in_time.miliseconds), null]);
        }
        else {
            dtblData.addRow([data[i].display_name, new Date(data[i].in_time.year, data[i].in_time.month, data[i].in_time.day, data[i].in_time.hours, data[i].in_time.minutes, data[i].in_time.seconds, data[i].in_time.miliseconds), new Date(data[i].out_time.year, data[i].out_time.month, data[i].out_time.day, data[i].out_time.hours, data[i].out_time.minutes, data[i].out_time.seconds, data[i].out_time.miliseconds)]);                                        
        }
    }

    var dateinFormat = new google.visualization.DateFormat({ formatType: 'long', pattern: "dd/MM/yyyy HH:mm:ss ZZZZ" });
    dateinFormat.format(dtblData, 1);
    var dateOutFormat = new google.visualization.DateFormat({ formatType: 'long', pattern: "dd/MM/yyyy HH:mm:ss ZZZZ" });
    dateOutFormat.format(dtblData, 2);

    var materialOptions = {
        //width: 900,
        chart: {
            title: '',
            subtitle: 'Intime, Outime of your kids or staff'
        },
        series: {
            0: { axis: 'In Time' }, // Bind series 0 to an axis named 'In Time'.
            1: { axis: 'Out time' } // Bind series 1 to an axis named 'Out Time'.
        },
        axes: {
            y: {
                distance: { label: 'In Time' }, // Left y-axis.
                brightness: { side: 'right', label: 'Out Time' }, // Right y-axis.
            }
        },                                    
    };

    function drawMaterialChart() {
        var materialChart = new google.charts.Bar(chartDiv);
        materialChart.draw(dtblData, google.charts.Bar.convertOptions(materialOptions));
    }
    drawMaterialChart();
}

我的问题是,在图表上显示月份为 7月但数据显示为 6月。当我在上滚动鼠标指针时,我不明白为什么它显示错误的月份?有人可以帮我解决这个问题吗?我认为这可能是时区问题。 请看截图。 enter image description here

1 个答案:

答案 0 :(得分:0)

JavaScript中的月份是零基础,因此范围从0到11(0表示1月,11表示12月)。

对于您的代码,您可以将月值减1来解决此问题。

可能有用的东西:

Why does the month argument range from 0 to 11 in JavaScript's Date constructor?