我刚刚在Lynda.com上完成了一个视频,并且无法获得教练使用D3获得的相同结果。我已经创建了一个更简单的文件版本,它仍然无法正常工作。当我尝试检索日期时,控制台输出NaN。
作为Excel输出的CSV是:
Date,AM
1995-04-16,3.5
1995-04-17,14.0
1995-04-18,10.8
并且Javascript文件包含:
d3.csv("bg_test_date_parsing.csv", function(d) {
return { Date: +d.Date, AM: +d["AM"] };
}, function(data) {
console.log(data[1]);
});
Mozilla的控制台给了我:
Object { Date: NaN, AM: 14 }
我无法继续进行任何项目,因为我不知道从哪里开始正确导入日期。 lynda.com上的视频一直在继续,我仍然没有得到如何导入和格式化日期。此外,CSV最初格式化为16-04-1995作为示例,从医疗仪器输出,我手动将其键入为年 - 月 - 日格式,显然D3将使用。我花了很长时间才使用Google来实现这一目标,所以我显然缺少一些重要的理解。
答案 0 :(得分:4)
+d.Date
并非以您想要的方式运作。在+
上致电16-04-1995
会产生NaN
。您无法将该字符串转换为类似的数字。
您可以像这样转换字符串var myDate = new Date('04-16-1995')
不幸的是,您的格式是日 - 月 - 年,而javascript需要月 - 日 - 年。
请参阅此问题,了解如何:
Convert dd-mm-yyyy string to date
更新正如@GerardoFurtado在评论中指出的那样,d3
库有一些内置的日期解析选项,可以转换不同格式的日期。请参阅他评论中的链接。
使用d3
,您可以将字符串转换为日期,如下所示:
var myDate = d3.timeParse("%d-%m-%Y")('16-04-1995')
或者,在你的循环中:
Date: d3.timeParse("%d-%m-%Y")(d.Date)