显示'NaN'日期格式的折线图 - 问题

时间:2014-05-08 15:14:59

标签: javascript google-visualization

我正在写信寻求帮助,如何将日期格式化为以下格式(dd-mm-yyyy),而不是以下输出中显示的内容:

enter image description here

我在下面的javascript中添加了一个日期解析器,我仍然不确定,为什么我得到这种格式。请指教。

    function drawVisualization(dataValues, chartTitle, columnNames, categoryCaption) {
        if (dataValues.length < 1)
            return;

        var data = new google.visualization.DataTable();
        data.addColumn('string', columnNames.split(',')[0]);
        data.addColumn('number', columnNames.split(',')[1]);
        data.addColumn('string', columnNames.split(',')[2]);
        data.addColumn('datetime', columnNames.split(',')[3]);

        for (var i = 0; i < dataValues.length; i++) {

            var date = new Date(parseInt(dataValues[i].Date.substr(6), 10));

            data.addRow([dataValues[i].ColumnName, dataValues[i].Value, dataValues[i].Type, date]);
        }

        var dateFormatter = new google.visualization.DateFormat({ pattern: 'dd MM yyyy' });
        var line = new google.visualization.ChartWrapper({
            'chartType': 'LineChart',
            'containerId': 'PieChartContainer',
            'options': {
                'width': 950,
                'height': 450,
                'legend': 'right',
                'hAxis': {
                    'format': "dd-MM-yyyy",
                    'hAxis.maxValue': 'viewWindow.max',
                    'maxValue': new Date(2014, 05, 30), 'minValue': new Date(2014, 04, 05),
                    'viewWindow': { 'max': new Date(2014, 05, 30) },
                },
                'title': chartTitle,
                'chartArea': { 'left': 100, 'top': 100, 'right': 0, 'bottom': 100 },
                'tooltip': { isHtml: true }
            },
            'view': {
                'columns': [{

                    type: 'string',
                    label: data.getColumnLabel(3),
                    calc: function (dt, row) {
                        var date = new Date(parseInt(dt.getValue(row, 3)));
                        return dateFormatter.formatValue(date);
                    }
                }, 1, {
                    type: 'string',
                    role: 'tooltip',
                    calc: function (dt, row) {
                        return 'Name: ' + dt.getValue(row, 0) + ', Decimal Price: ' + +dt.getValue(row, 1) + ', Date: ' + +dt.getFormattedValue(row, 3);
                    }
                }]
            }
        });

        new google.visualization.Dashboard(document.getElementById('PieChartExample')).bind([categoryPicker], [line]).draw(data);
    }

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

由于您的DataTable列的类型为&#34; datetime&#34;,因此您不想在其上调用parseInt

var date = new Date(parseInt(dt.getValue(row, 3)));

直接获取日期:

var date = dt.getValue(row, 3);