2015-09-18 35 views
9

Chcę wyświetlić wykres szeregów czasowych z C3.js przy użyciu daty w formacie 2015-09-17 18:20:34 i ciągu formatu '%Y-%m-%d %H:%M:%S', ale nie można przeanalizować.C3.js - Timeseries z czasem nie parsuje

Mój kod:

var chart = c3.generate({ 
    bindto: '#chart', 
    data: { 
     x: 'times', 
     columns: [ 
     ['times','2015-09-17 18:20:34','2015-09-17 18:25:42','2015-09-17 18:30:48'], 
     ['data','1539','1546','1546','1550'] 
     ] 
    }, 
    axis: { 
     x: { 
      type: 'timeseries', 
      tick: { 
       format: '%Y-%m-%d %H:%M:%S' 
      } 
     } 
    } 
}); 

I pojawia się następujący błąd:

02:26:44.889 Failed to parse x '2015-09-17 18:20:34' to Date object c3.min.js:1:21943 
02:26:44.889 Failed to parse x '2015-09-17 18:25:42' to Date object c3.min.js:1:21943 
02:26:44.890 Failed to parse x '2015-09-17 18:30:48' to Date object c3.min.js:1:21943 
02:26:44.890 Failed to parse x '2015-09-17 18:20:34' to Date object c3.min.js:1:21943 
02:26:44.891 Failed to parse x '2015-09-17 18:25:42' to Date object c3.min.js:1:21943 
02:26:44.892 Failed to parse x '2015-09-17 18:30:48' to Date object c3.min.js:1:21943 

To działa, jeśli pominąć czas w danych w formacie ale potrzebuję czasu, zbyt.

+0

Hej, nie masz aktualizacji dla tego pytania, I m również czeka na odpowiedź :) – vinodh

+0

@vinodh Tak znalazłem rozwiązanie i je opublikował. :) (Zapraszam do przegłosowania, jeśli jest pomocna: D) –

Odpowiedz

21

znalazłem rozwiązania mojego problemu:

Format w obiekcie axis jest tylko, aby określić, jak będzie wyświetlana data. Jeśli chcesz określić format przetwarzania daty, musisz użyć obiektu xFormat w obiekcie data.

var chart = c3.generate({ 
    bindto: '#chart', 
    data: { 
     x: 'times', 
     xFormat: '%Y-%m-%d %H:%M:%S', // how the date is parsed 
     columns: [ 
     ['times','2015-09-17 18:20:34','2015-09-17 18:25:42','2015-09-17 18:30:48'], 
     ['data','1539','1546','1546','1550'] 
     ] 
    }, 
    axis: { 
     x: { 
      type: 'timeseries', 
      tick: { 
       format: '%Y-%m-%d %H:%M:%S' // how the date is displayed 
      } 
     } 
    } 
}); 
+0

Próbowałem, ale zapewni Nan. Czy masz jakiś pomysł? – vinodh

+0

xFormat: '% Y /% m /% d% H:% M:% S% A', format: '% Y%% m-% d% H:% M:% S% A' – vinodh

+0

W jaki sposób dane czasowe wyglądają jak? –

1

Istnieje również inny sposób przekazywania daty do tablic z serii c3 timeseries. Możesz konwertować ciągi dat na Javascript Date object przed podaniem do c3.

var chart = c3.generate({ 
    bindto: '#chart', 
    data: { 
     x: 'times', 
     xFormat: '%Y-%m-%d %H:%M:%S', // how the date is parsed 
     columns: [ 
     ['times',new Date('2015-09-17 18:20:34'),new Date('2015-09-17 18:25:42'),new Date('2015-09-17 18:30:48')], 
     ['data','1539','1546','1546','1550'] 
     ] 
    }, 
    axis: { 
     x: { 
      type: 'timeseries', 
      tick: { 
       format: '%Y-%m-%d %H:%M:%S' // how the date is displayed 
      } 
     } 
    } 
}); 

jeśli masz trudności z konwersji data ciągi Data Objects (np 2016-01-01T00: 00: 00Z.), Można również użyć momentjs przeanalizować swoją DateString.

var momentjsobject = moment('2016-05-06T00:00:00Z'); 
var dateObject = new Date(momentjsobject.format('YYYY-MM-DD HH:mm:ss'));