2012-03-03 13 views
30

Używam highcharts i nie mogę określić, jaki powinien być dat wejściowy daty od dat szyn do akceptowanego formatu dat.Jaki format akceptuje daty biblioteka highcharts js?

W moim pliku migracji jestem przechowywania datę tak:

t.date :consumption_date 

Wartość zostanie zapisany w tym formacie „2012-03-25”, a idąc do terminala i znalezienie rekordu uzyskać to :

=> Sat, 31 Mar 2012 

Gdy wykres świadczy, jednostka wyświetlania punktów Nieprawidłowa data. Poniższa tablica staje się wyjście do highcharts do renderowania

[[Sun, 25 Mar 2012, 1158], [Sat, 31 Mar 2012, 1200]] 

formacie, który highcharts zastosowań w jednym z ich wykresów Demo, gdy dane są składane w jQuery ma postać:

[[Date.UTC(1970, 9, 27), 0 ], [Date.UTC(1970, 10, 10), 0.6 ]] 

jak mogę pozbyć się nieprawidłowej daty, przesyłając poprawny format daty do wysokogatunkowych.

Odpowiedz

33

Wewnętrznie Highcharts używa javascript Date numbers (liczba milisekund od 1 stycznia 1970) do reprezentowania dat. Zobacz Mozilla reference.

Aby uzyskać dat na osi będzie trzeba najpierw ustawić typ oś „datetime”:

xAxis: { 
    type: 'datetime' 
} 

masz kilka opcji podczas określania danych Series (wszystkie trzy przykłady, które dają ten sam wykres) :

  1. Ustawienie punkt początkowy i za pomocą stałego odstępu między punktami

    pointStart: Date.UTC(2012, 2, 6, 10), 
    pointInterval: 1000 * 60 * 60, 
    data: [5, 6, 4] 
    
  2. Określanie dokładnej daty przy użyciu metody Date.UTC. W ten sposób jego czytelna dla ludzi:

    data: [ 
        [Date.UTC(2012, 2, 6, 10), 5], 
        [Date.UTC(2012, 2, 6, 11), 6], 
        [Date.UTC(2012, 2, 6, 12), 4]] 
    
  3. Albo określający czas epoki bezpośrednio:

    [[1331028000000, 5], [1331031600000, 6], [1331035200000, 4]] 
    

przykład na jsfiddle

+0

Jedynym wyjściem, które zadziałało, było bezpośrednie bezpośrednie wprowadzenie czasu epock. dzięki – Hishalv

4

dodanie do @eolsson, czas epoka jest zwykle droga aby przejść od strony technicznej, obiekty Date() są javascript, a nie JSON i prawdopodobnie nie znajdziesz seryjnego serializatora, który je generuje.

Będziemy chcieli, aby sformatować datę też coś takiego -

xAxis: { 
    type: 'datetime', 
    labels: { 
    formatter: function() { 
     return Highcharts.dateFormat('%e %b', this.value*1000); // milliseconds not seconds 
    }, 
    } 
} 

Formatowanie data odbywa php style.