Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将日期字符串格式化为适合Google calendar作为参数_Javascript_Date_Google Visualization_Google Calendar Api - Fatal编程技术网

Javascript 将日期字符串格式化为适合Google calendar作为参数

Javascript 将日期字符串格式化为适合Google calendar作为参数,javascript,date,google-visualization,google-calendar-api,Javascript,Date,Google Visualization,Google Calendar Api,我有一个字符串,表示2014-7-2014之类的数据。我正在用Javascript格式化这个日期,以便可以将它用作Google日历图表的参数 例如 然后我使用键值数组来获取月份数。 然后我用..填充Google日历数据表 data.addRow([new Date(ParseInt("splitted[0]"),months.splitted[1], ParseInt("splitted[2]")), dataValues[i].Value]); 我使用ParseInt()将字符串转换为数字,

我有一个字符串,表示2014-7-2014之类的数据。我正在用Javascript格式化这个日期,以便可以将它用作Google日历图表的参数

例如

然后我使用键值数组来获取月份数。 然后我用..填充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 });
   }
保持简单,这应该可以:

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


它对我起作用了,这里有一个工作的代码。

下面是如何将字符串日期值转换为数字日期

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;
现在,您可以根据需要在数据函数中使用此变量

这是


希望对你有帮助

你能再解释一下你想显示什么样的数据吗?因为这篇文章让人困惑,你说你需要一个谷歌日历参数,但是你提供的代码是用于统计和调查的
googledatatables
。。。你也可以提供你的json数据,以便更方便地帮助你。我有一个json文件,像这样
[{“日期”:“2014-1-15”,“频率”:11},{“日期”:“2014-1-8”,“频率”:22}]
我想用谷歌日历图表来显示这些信息。我无法手动添加这些行条目。我需要使用循环来填充行。我将此方法用于其他图表,如饼图等,效果良好。问题在于日期,因为它不是addRow函数所要求的正确格式,无法运行。请尝试我的更新答案并给出一些反馈。我将在20:00后尝试,因为我在工作,并更新每个人。谢谢,我试过了。图表正在绘制中,至少是标题,但日期给出了一个NaN,NaN。我知道,因为我还在日历图表下显示数据表。这是我正在使用的样本数据[{“日期”:“2014-1-15”,“频率”:11},{“日期”:“2014-1-8”,“频率”:22},{“日期”:“2014-1-10”,“频率”:11}]@user2307236检查更新的答案,在提供的小提琴中解决了您的问题。希望有帮助!问题是日期是从文件
/date(12712000000)/
以这种格式返回的。我用几行代码解决了这个问题<代码>for(var i=0;i谢谢你们的帮助我很高兴你们找到了你们需要的东西,希望能有所帮助。那你要赏金给我吗?当然。我接受了你的回答。我是否需要做些其他事情来奖励你奖金,因为这是第一次,我不确定我是否奖励了你奖金。即使这样,由于日期不正确,也没有绘制日历。我添加了绘制图表+测试数据的功能。您不必在新日期中写入“格式化”,只需使用如上所示的年、月和日期变量创建新日期即可。您的解决方案绝对不值得,您的第一行:
var date=新日期(“2014年1月12日”)
已经是一个有效的javascript日期,因此无需执行下面的所有操作。@Kutyel是的,您是对的,但用户希望将其转换为“数字”有疑问的是“我使用ParseInt()将字符串转换为数字,因为新日期(yyy,mm,dd)只将整数作为参数”
data.addRow([ new Date(dataValues[i].Date), dataValues[i].Frequencies ]);
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);