2011-08-06 29 views
5

Tôi có vấn đề lạ mà tôi gặp phải nhưng tôi chắc rằng ai đó ở đây sẽ biết tôi đang làm gì sai. Tất cả các ngày của tôi đang hiển thị không chính xác (tức là tháng sáu hiển thị tháng bảy, tháng bảy được hiển thị Tám)API biểu đồ của Google: Ngày không chính xác được hiển thị

Mã của tôi ở đây:

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

là hiển thị tất cả dữ liệu chính xác TRỪ ngày - thay vì hiển thị trên bảng xếp hạng tháng Sáu, họ đang hiển thị tháng 7 ??? Cùng ngày tháng nhưng tháng sai?

Trả lời

10

Đối tượng Ngày tháng bắt đầu đếm tháng lúc 00, vì vậy 00 = Tháng 1, 01 = Tháng 2, v.v ... Vì vậy, khi bạn xây dựng ngày của mình bằng '06' trong trường tháng, đó thực sự là tháng thứ 7 hoặc tháng 7

+0

chỉ thấy rằng trong khi tìm hiểu thêm về Đối tượng ngày! chỉ để làm cho nó khó khăn !!! –

+0

xuất hiện ngay bây giờ, mọi lập trình viên đều biết bạn bắt đầu đếm ở 0;) – wolv2012

+0

có, nhưng những ngày trong tháng bắt đầu đếm với 1 vì vậy có ngoại lệ! Tôi nhận được ngày từ MySQL bằng cách sử dụng DATE_FORMAT với% m - có vẻ như không phải là một phương pháp để có được những gì tôi cần - Tôi sẽ có -1 mỗi tháng! là có một cách tốt hơn (BTW - nó sẽ là một căng cho tôi để phân loại bản thân mình như là một "lập trình" :) –

2

Để xây dựng trên wolv2012 đáp lại, tôi chỉ chạy vào vấn đề này: JS hệ thống tháng đếm là zero-based trong khi MySQL trả về số tháng giữa 1 và 12.

ngày của tôi được định dạng trong SQL trước khi nó đi vào Javascript new Date(...), tôi bồi thường cho điều này bằng cách thêm "-1" vào số tháng của tôi trong khi vẫn còn trong SQL:

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

Trong khi điều này có vẻ hơi tự làm với tôi, nó chắc chắn hoạt động.

0

Tôi gặp vấn đề tương tự, chủ đề này đã giúp tôi, cảm ơn bạn! Tôi biết bài đăng này rất cũ, nhưng nó có liên quan đến tôi, vì vậy trong trường hợp nó giúp người khác trong tương lai:

Khắc phục sự cố cho SQL Server là: SELECT cast(DATEADD(month,-1,[mydate]) as newdate Và thực sự, đối với định dạng cho biểu đồ chú thích google I đang sử dụng, tôi phải định dạng như sau: replace(cast(DATEADD(month,-1,[mydate]) as date),'-', ',') as dateforJSON

Các vấn đề liên quan