2017-05-17 33 views
1

我無法理解d3.timeParse的工作原理。我初始化函數開頭是這樣的:不理解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

我敢肯定,這是一個[XY問題(https://meta.stackexchange.com/questions/ 66377/what-is-the-xy-problem)...代碼將字符串解析爲日期對象並記錄該對象的字符串表示形式。就我所能看到的而言,它確實如此。爲什麼要解析一個日期字符串,並將其打印出來並保持不變?你究竟在努力實現什麼? – altocumulus

回答

1

使用timeFormat,幷包裹d.datenew Date(d.date) - https://jsfiddle.net/supeh4fd/

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); 
    }); 
+0

你可以看看這個[SO問題](http://stackoverflow.com/questions/44011739/include-json-in-this-d3-js-calendar-view)?這就是我做這些的原因,我仍然無法弄清楚爲什麼圖表沒有填滿。 – rbhat

+0

不幸的是,我不知道這個問題的解決方案。 –

0

您還可以使用moment.js庫和所有日期相關的操作變得很容易。 https://momentjs.com/

如果你有圖書館,你可以試試這個

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