我刚刚在 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 花了好几个小时才走到这一步,所以我显然缺少一些关键的理解。
最佳答案
+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')
或者,在你的循环中:
日期:d3.timeParse("%d-%m-%Y")(d.Date)
关于javascript - 为什么 CSV 文件中的日期输出为 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42742678/