Google Charts API: отображается неверная дата - PullRequest
5 голосов
/ 06 августа 2011

У меня странная проблема, с которой я озадачен, но я уверен, что кто-то здесь будет знать, что я делаю неправильно.Все мои даты отображаются неправильно (то есть июнь показывает июль, июль показывает август)

Мой код здесь:

// 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}
    });

Отображает все данные правильно, КРОМЕ ДАТЫ - вместо отображения награфик июнь показывает июль ???Те же дни месяца, но месяц неправильный?

Ответы [ 3 ]

11 голосов
/ 06 августа 2011

Объект Date в javascript начинает считать месяцы в 00, поэтому 00 = январь, 01 = февраль и т. Д. Итак, когда вы строите свои даты, используя '06' в поле месяца, это фактически 7-й месяц или июль

2 голосов
/ 18 декабря 2011

Чтобы построить ответ на wolv2012, я столкнулся с этой проблемой: система подсчета месяцев JS основана на нуле, а MySQL возвращает числа месяцев от 1 до 12.

Моя дата форматируется в SQL до того, как она отправитсяв Javascript new Date(...) я компенсирую это, добавляя «-1» к моему номеру месяца, пока он еще в SQL:

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

Хотя это выглядит немного DIY для меня, оно определенно работает.

0 голосов
/ 24 августа 2016

У меня была такая же проблема, эта ветка помогла мне, спасибо!Я знаю, что этот пост очень старый, но он был актуален для меня, поэтому в случае, если он поможет кому-то еще в будущем:

Мое исправление для SQL Server было: SELECT cast(DATEADD(month,-1,[mydate]) as newdate И фактически, для формата дляДиаграмму аннотации Google, которую я использовал, мне нужно было отформатировать так: replace(cast(DATEADD(month,-1,[mydate]) as date),'-', ',') as dateforJSON

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...