我刚刚在Lynda.com上完成了一段视频,却无法获得与老师使用D3相同的结果。我已经创建了一个简单的文件版本,但它仍然无法工作。当我试图检索日期时,控制台将输出NaN。
CSV作为Excel的输出,是:
Date,AM
1995-04-16,3.5
1995-04-17,14.0
1995-04-18,10.8Javascript文件包含:
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将使用的年月日格式中。我已经用了好几个小时的时间使用谷歌才走到这一步,所以我显然缺少一些关键的理解。
发布于 2017-03-12 01:38:42
+d.Date的工作方式不是你想要的。在+上调用16-04-1995将导致NaN。你不能把那个字符串转换成那样的数字。
您可以像这样转换字符串,var myDate = new Date('04-16-1995')
不幸的是,您的格式是日-月-年,而javascript需要月-日-年.
关于如何处理这个问题,请看这个问题:
Convert dd-mm-yyyy string to date
Update @GerardoFurtado在他的评论中指出,d3库有一些内置的日期解析选项,可以转换不同格式的日期。请参阅他评论中的链接。
使用d3,可以将字符串转换为如下日期:
var myDate = d3.timeParse("%d-%m-%Y")('16-04-1995')
或者,在你的循环中:
Date: d3.timeParse("%d-%m-%Y")(d.Date)
https://stackoverflow.com/questions/42742678
复制相似问题