2017-05-17 12 views
1

Ich habe Probleme zu verstehen, wie d3.timeParse funktioniert. Ich initialisieren die Funktion am Anfang wie folgt aus:Das Ergebnis von d3.timeParse nicht verstanden?

var dateParse = d3.timeParse("%Y-%m-%d"); 

ich es dann hier nennen:

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

Das Problem ist, dass console.log(d.dd); gibt die folgende Zeichenfolge

Mi 4. Januar 2017 00 : 00: 00 GMT-0400 (SA Westliche Standardzeit)

wenn es diese zurück:

2017-01-04

Ich habe versucht, das Format des Parameters zu ändern (wenn das ist, was das ist wirklich) von "%Y-%m-%d" auf etwas anderes, aber jede Änderung gibt null zurück.

Jede Hilfe wird geschätzt.

Danke.

+2

ich ziemlich sicher bin, das ist ein [XY Problem] (https://meta.stackexchange.com/questions/ 66377/Was-ist-das-XY-Problem) ... Der Code analysiert die Zeichenfolge zu einem Datumsobjekt und protokolliert die Zeichenfolgendarstellung genau dieses Objekts. Soweit ich sehen kann, tut es genau das, was es soll. Warum würden Sie eine Datumsangabe parsen und unverändert ausdrucken lassen? Was versuchst du eigentlich zu erreichen? – altocumulus

Antwort

1

Verwenden timeFormat und wickeln d.date zu new 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

Wäre es möglich, dies zu betrachten [SO Frage] (http://stackoverflow.com/questions/44011739/include-json-in-this-d3-js-calendar-view)? Das ist der Grund, warum ich das alles mache und ich kann immer noch nicht herausfinden, warum die Grafik nicht voll ist. – rbhat

+0

Leider habe ich keine Ahnung von der Lösung dieser Frage. –

0

Sie auch sehr einfach werden kann moment.js Bibliothek und alle datumsbezogenen Operationen verwenden können. https://momentjs.com/

Wenn Sie die Bibliothek haben, können Sie versuchen, diese

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

Verwandte Themen