2015-10-05 28 views
7

influxDB timestamp simile a questa:C3.js - Come specificare il formato di data e ora durante la stampa timeseries prese da InfluxDB

  • 2015-01-29T21:55:43.702900257Z

La domanda è: quali opzioni è necessario utilizzare per la x-axis quando ho generare il grafico con C3.js

l'errore che ottengo:

"Impossibile analizzare x '2015-01-29T21: 55: 43.702900257Z' to Date oggetto"

Forse questo jsfiddle vi aiuterà a fare qualche test rapidi ... Credo che il problema è con il formato dell'ora, ma altri suggerimenti sono ben accetti:

axis: { 
    x: { 
     type: 'timeseries', 
     tick: { 
      format: '%Y-%m-%d' 
     } 
    } 
} 
+0

InfluxDB emette timestamp RFC3339. Una rapida ricerca mostra un [alcuni] (http://stackoverflow.com/questions/10531276/javascript-using-datejs-to-parse-rfc3339-datetime) [raccomandazioni] (http://stackoverflow.com/questions/11318634/how-to-convert-date-in-rfc-3339-to-the-javascript-date-objectmilliseconds-since) per l'analisi dei timestamp RFC3339 in javascript. – beckettsean

risposta

17

in primo luogo, ho dovuto aggiungere xFormat perché come dice @das Kekshere:

"Il formato nell'oggetto asse definisce solo come verrà visualizzata la data. Se si desidera specificare il formato per la data analisi è necessario utilizzare xFormat nell'oggetto dati ".

data: { 
    x: 'x', 
    xFormat: '%Y-%m-%dT%H:%M:%S.%LZ', 
    columns: [ 
     ['x', ... ], 
     ['data1', ... ] 
    ] 
} 

Per la xFormat options vedere d3.js/Time Formatting


Seconda Per ottenere il formato corretto, ho modificato ogni timestamp creando innanzitutto un oggetto Date con Date() e quindi utilizzando dateObj.toISOString().Ad esempio, apri la console e prova questo:

> new Date('2015-09-30T12:21:41.447494312Z').toISOString(); 
> "2015-09-30T12:21:41.447Z"