Google Charts API:显示的日期不正确

时间:2011-08-06 07:10:39

标签: javascript google-visualization

我有一个奇怪的问题,我很困惑,但我相信在这里有人会知道我做错了什么。我的所有日​​期都显示不正确(即6月显示7月,7月显示8月)

我的代码在这里:

// Load the Visualization API and the piechart package.
google.load('visualization', '1.0', {'packages':['corechart']});

// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(drawVisualization);

// Callback that creates and populates a data table,
// instantiates the pie chart, passes in the data and
// draws it.
function drawVisualization() {

    var chartTable = new google.visualization.DataTable();
    chartTable.addColumn('date', 'Date');
    chartTable.addColumn('number', 'Sell');
    chartTable.addColumn('number', 'GP');
    chartTable.addRows(6);

    chartTable.setValue(0, 0, new Date( 2011, 06, 22 ));
    chartTable.setValue(0, 1, 1316.90);
    chartTable.setValue(0, 2, 456.05);
    chartTable.setValue(1, 0, new Date( 2011, 06, 21 ));
    chartTable.setValue(1, 1, 1793.70);
    chartTable.setValue(1, 2, 531.10);
    chartTable.setValue(2, 0, new Date( 2011, 06, 20 ));
    chartTable.setValue(2, 1, 13559.25);
    chartTable.setValue(2, 2, 1337.75);
    chartTable.setValue(3, 0, new Date( 2011, 06, 17 ));
    chartTable.setValue(3, 1, 3034.15);
    chartTable.setValue(3, 2, 892.30);
    chartTable.setValue(4, 0, new Date( 2011, 06, 16 ));
    chartTable.setValue(4, 1, 568.45);
    chartTable.setValue(4, 2, 175.05);
    chartTable.setValue(5, 0, new Date( 2011, 06, 15 ));
    chartTable.setValue(5, 1, 7203.85);
    chartTable.setValue(5, 2, 1343.45);

    var date_formatter = new google.visualization.DateFormat({pattern: 'EEE, MMM-d'});
    date_formatter.format(chartTable, 0); // Apply format to first column of table

    var currency_formatter = new google.visualization.NumberFormat({prefix: '$'});
    currency_formatter.format(chartTable, 1); // Apply format to second column of chart
    currency_formatter.format(chartTable, 2); // Apply format to third column of chart

    // Create and draw the visualization.
    chart = new google.visualization.LineChart(document.getElementById('chart'));
    chart.draw(chartTable, {width: 900, height: 400, title: 'Sales Summary',
        vAxis: {maxValue: 20000, format: '$##,###', viewWindowMode: 'maximized'},
        hAxis: {direction: -1}
    });

正确显示所有数据除了日期 - 而不是在图表上显示6月它显示7月???这个月的同一天但这个月错了吗?

3 个答案:

答案 0 :(得分:11)

javascript Date对象从00开始计算月份,因此00 = 1月,01 = 2月等...所以当你在月份字段中使用'06'构建日期时,实际上是第7个月,或者7月< / p>

答案 1 :(得分:2)

为了构建wolv2012响应,我遇到了这个问题:JS月计数系统从零开始,而MySQL则返回1到12之间的月数。

我的日期在进入Javascript new Date(...)之前在SQL中格式化,我通过在我的月份数字中附加“-1”来补偿这一点,同时仍在SQL中:

SELECT DATE_FORMAT(jobs.date, '%Y, %m-1, %d') ...

虽然这对我来说看起来有点DIY,但它绝对有效。

答案 2 :(得分:0)

我有同样的问题,这个帖子帮了我,谢谢!我知道这篇文章很老了,但这对我来说很重要,所以万一它会帮助别人:

我对SQL Server的修复是:SELECT cast(DATEADD(month,-1,[mydate]) as newdate实际上,对于我使用的google注释图表的格式,我必须格式如下: replace(cast(DATEADD(month,-1,[mydate]) as date),'-', ',') as dateforJSON