格式化日期字符串以适合Google日历作为参数

时间:2014-11-30 18:59:25

标签: javascript date google-visualization google-calendar-api

我有一个字符串代表2014年7月至2014年的数据。我在javacript格式化这个日期,以便我可以将它用作Google日历图表的参数。

E.g。

var x = "2014-July-12";

var splitted = x.spilt('-');
// to get "2014" at index [0], "July" at index [1] and "12" at index [2].

然后我使用键值数组来获取月数。 然后我用..填充Google日历数据表

data.addRow([new Date(ParseInt("splitted[0]"),months.splitted[1], ParseInt("splitted[2]")), dataValues[i].Value]);

我使用ParseInt()将字符串转换为数字,因为新的日期(yyy,mm,dd)仅将整数作为参数。 我不能让这个日历工作。我在网上搜索了很多但是找不到如何从json文件填充Google日历日历图表的好例子。

你们可以看看并指导我如何完成这项任务并解释我是不是错了。 提前谢谢。

绘制日历图表功能

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);
           var year = date.getFullYear(), month = (date.getMonth() + 1), day = date.getDate();
           if (month < 10) month = "0" + month;
           if (day < 10) day = "0" + day;
           var Formatted = "" + year + "," + month + "," + day;
           //           data.addRow([new Date(dataValues[i].Date), dataValues[i].Frequencies]);
           data.addRow([new Date(Formatted), 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错误。频率正在变得正确。所以它必须与日期格式相关。 这是我正在使用的测试字符串。

[
    {
        "Date": "2014-January-15",
        "Frequencies": 11
    },
    {
        "Date": "2014-January-8",
        "Frequencies": 22
    },
    {
        "Date": "2014-January-10",
        "Frequencies": 11
    }
]

2 个答案:

答案 0 :(得分:1)

保持简单 ,这应该有效:

data.addRow([ new Date(dataValues[i].Date), dataValues[i].Frequencies ]);

<强>更新

这对我有用,在这里您可以使用代码 fiddle

答案 1 :(得分:1)

以下是将字符串日期值转换为编号日期的方法。

var date = new Date("12-January-2014");
var year = date.getFullYear(), month = (date.getMonth() + 1), day = date.getDate();
if (month < 10) month = "0" + month;
if (day < 10) day = "0" + day;

var Formatted = "" + year+"," + month+"," + day;

修改

  var vt=  new Date(year, month, day);

  alert(vt);

现在您可以根据需要在数据函数中使用此变量。

这是code

希望它有所帮助...... !!!