我有一个Json字符串,我想在Google日历图表中显示。 这是我用作样本数据的Json字符串。
[
{
"Date": "2014-January-15",
"Frequencies": 11
},
{
"Date": "2014-January-8",
"Frequencies": 22
},
]
然后我用这个方法绘制图形。
function drawCalendarChart(jsonObj) {
var dataValues = eval(jsonObj)
var data = new google.visualization.DataTable(dataValues);
data.addColumn({ type: 'date', id: 'Date' });
data.addColumn({ type: 'number', id: 'Reports' });
for (var i = 0; i < dataValues.length; i++) {
var date = new Date(dataValues[i].Date);
alert("This is the date " + date + "and frequency " + dataValues[i].Frequencies)
// data.addRow([new Date(dataValues[i].Date), dataValues[i].Frequencies]);
}
var options = {
title: "Calendar Chart",
height: 350
};
var chart = new google.visualization.Calendar(document.getElementById('chart'));
chart.draw(data, options);
var table = new google.visualization.Table(document.getElementById('table'));
table.draw(data, { showRowNumber: true });
}
警报为频率提供了正确的值,但日期的日期无效。 由于日期无效,日历图表仅显示标题。 数据表显示频率的正确值和日期的NaN,NaN。
我尝试用几种方式格式化日期,但我无法完成这项工作。现在我更加困惑,因为即使警报至少没有显示文件中的数据,例如2014年一月12。 提前谢谢。
答案 0 :(得分:0)
我认为日期应格式如下:&#34; yyyy-mm-dd&#34;。
以下是数据应该是什么样子:
[
{
"Date": "2014-01-15",
"Frequencies": 11
},
{
"Date": "2014-01-8",
"Frequencies": 22
},
]
答案 1 :(得分:0)
您的代码可以正常运行,但js规范并不保证。 例如,请阅读mozilla specifications。
无论如何,您可以尝试像这样转换日期:
function parseDate(input){
var pattern=/(.*?)\-(.*?)\-(.*?)$/;
var result = input.replace(pattern,function(match,p1,p2,p3){
return (p3<10?"0"+p3:p3)+" "+p2.substring(0, 3)+" "+p1;
});
return result;
}
在您的代码中:
var date = new Date(parseDate(dataValues[i].Date));