javascript - 为什么 CSV 文件中的日期输出为 NaN?

标签 javascript datetime d3.js

我刚刚在 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/

相关文章:

javascript - 在 D3.js 中对大型 CSV 进行排序

javascript - 如何在 PHP 中显示和解析查看者日期/时间而不是服务器日期/时间的存储变量?

javascript - 如何在换行符上自定义插入的 contentEditable 的 div?

c# - 列出日期,添加时间以列出 linq

javascript - 将日期显示为日期时间输入

javascript - D3.js 可折叠树 - 展开/折叠中间节点

javascript - 在 URI 中存储 dc.js 过滤器并恢复它们

javascript - 加载数据ajax风格

javascript - knockout 不渲染

python - 显示没有时间的 Python 日期时间