不了解d3.timeParse的结果?

时间:2017-05-17 13:38:12

标签: javascript d3.js

我无法理解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

感谢任何帮助。

感谢。

2 个答案:

答案 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;
&#13;
&#13;

答案 1 :(得分:1)

您还可以使用moment.js库,所有与日期相关的操作都可以变得非常简单。 https://momentjs.com/

如果您有图书馆,可以试试这个

data.forEach(function(d) {
    d.dd = moment(d["date"], "YYYY-MM-DD");;
    console.log(d.dd);
  });