我无法理解d3.timeParse
的工作原理。我在开头初始化函数,如下所示:
var dateParse = d3.timeParse("%Y-%m-%d");
然后我在这里打电话:
d3.json("data3.json", function(error, data) {
//populating data since i don't have the file
data = [{
"date": "2017-01-04",
"open": 10430.69
}, {
"date": "2017-01-05",
"open": 10584.56
}];
data.forEach(function(d) {
d.dd = dateParse(d.date);
console.log(d.dd);
});
问题是console.log(d.dd);
返回以下字符串
2017年1月4日星期三00:00:00 GMT-0400(SA西部标准时间)
何时应该返回:
2017年1月4日
我已尝试将参数的格式(如果这是真的那样)从"%Y-%m-%d"
更改为其他任何内容,但任何更改都会返回 null 。
感谢任何帮助。
感谢。
答案 0 :(得分:2)
使用timeFormat
,并将d.date
换行至new Date(d.date)
:
var dateParse = d3.timeFormat("%Y-%m-%d");
var data = [{
"date": "2017-01-04",
"open": 10430.69
}, {
"date": "2017-01-05",
"open": 10584.56
}];
data.forEach(function(d) {
d.dd = dateParse(new Date(d.date));
console.log(d.dd);
});

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.13.0/d3.min.js"></script>
&#13;
答案 1 :(得分:1)
您还可以使用moment.js库,所有与日期相关的操作都可以变得非常简单。 https://momentjs.com/
如果您有图书馆,可以试试这个
data.forEach(function(d) {
d.dd = moment(d["date"], "YYYY-MM-DD");;
console.log(d.dd);
});