Рикша неверно истолковывает дату и время

Я использую библиотеку javascript Rickshaw, чтобы показать некоторые графические значения, следуя модели из здесь< /а>. Данные для рисования предоставляются через вызов Ajax, например:

[{"цвет":"#65A1CC","данные":[{"x":1383906402000,"y":22,31},{"x":1383906428000,"y":22,38},{"x":1383906452000 ,"y":22,31},{"x":1383906477000,"y":22,38},{"x":1383906502000,"y":22,38},{"x":1383906527000,"y":22,38}, {" x":1383906552000,"y":22.31},{"x":1383906577000,"y":22.31}],"name":"Датчик 1"},{"color":"#CC9065"," данные":[{"x":1383906402000,"y":22,38},{"x":1383906427000,"y":22 .38},{"x":1383906452000,"y":22,38},{" x":1383906477000,"y":22,38},{"x":1383906502000,"y":22,38},{"x":1383906527000,"y":22,38},{"x":1383906552000,"y" :22.38},{"x": 1383906577000,"y":22.38}],"name":"Датчик 2"}]

Длинные значения, приведенные здесь, представляют собой время данных между пятницей 08 ноября 13:26:42 FET 2013 и пятницей 08 ноября 13:29:37 FET 2013.

Однако при наведении курсора на полученный график даты, показанные для различных значений, отображаются как «Сб апр. 03», как на изображении ниже. Я не понимаю, почему: если в javascript я перебираю данные, объект Date javascript показывает ноябрьское время, а не апрельское.

введите здесь описание изображения

Код:

<div id="chart_container">
<div id="chart" style="background-color: white;"></div>
<div id="legend_container">
    <div id="smoother" title="Smoothing"></div>
    <div id="legend"></div>
</div>
<div id="slider"></div>

$.ajax({                        
         type : "POST",
         dataType: "json",
         url : "/myApp/someURL",
         data: { pack:selectedpack} 
      }
     ).done(function(data) {
        showDashboard(data);
    }); 

function showDashboard(data) {
    $("#charts").show();
    $("#chart").empty();
    $("#legend").empty();

    var graph = new Rickshaw.Graph({
        element: document.getElementById("chart"),
        width: 1000 - 130,
        height: 400,
        renderer: 'line',
        series: data
    });

    graph.render();

    var slider = new Rickshaw.Graph.RangeSlider({
        graph: graph,
        element: $('#slider')
    });

    var hoverDetail = new Rickshaw.Graph.HoverDetail({
        graph: graph
    });

    var legend = new Rickshaw.Graph.Legend({
        graph: graph,
        element: document.getElementById('legend')

    });

    var shelving = new Rickshaw.Graph.Behavior.Series.Toggle({
        graph: graph,
        legend: legend
    });

    var axes = new Rickshaw.Graph.Axis.Time({
        graph: graph
    });
    axes.render();
}

The following js files are included: jquery-ui.min.js, d3.v2.js, rickshaw.js, Rickshaw.Class.js, Rickshaw.Compat.ClassList.js, Rickshaw.Graph.js, Rickshaw.Graph.Renderer.js, Rickshaw.Graph.Renderer.Area.js, Rickshaw.Graph.Renderer.Line.js, Rickshaw.Graph.Renderer.Bar.js, Rickshaw.Graph.Renderer.ScatterPlot.js, Rickshaw.Graph.RangeSlider.js, Rickshaw.Graph.HoverDetail.js, Rickshaw.Graph.Annotate.js, Rickshaw.Graph.Legend.js, Rickshaw.Graph.Axis.Time.js, Rickshaw.Graph.Behavior.Series.Toggle.js, Rickshaw.Graph.Behavior.Series.Order.js, Rickshaw.Graph.Behavior.Series.Highlight.js, Rickshaw.Graph.Smoother.js, Rickshaw.Graph.Unstacker.js, Rickshaw.Fixtures.Time.js, Rickshaw.Fixtures.Time.Local.js, Rickshaw.Fixtures.Number.js, Rickshaw.Fixtures.RandomData.js, Rickshaw.Fixtures.Color.js, Rickshaw.Color.Palette.js, Rickshaw.Graph.Axis.Y.js

Что мне сделать, чтобы получить ноябрьское время вместо апрельского?

Спасибо.


person lmsasu    schedule 08.11.2013    source источник


Ответы (1)


Вам нужно передать в секундах, а не в миллисекундах, поэтому вы должны разделить данные о времени на 1000. Например, вместо 1383906452000 нужно иметь 1383906452.

Если невозможно вернуть значения времени в секундах со стороны сервера, на стороне клиента вы можете использовать следующее перед вызовом showDashboard(data):

$(data).each(function (e, i) {
    $(i.data).each(function (f, j) {
        j.x = j.x / 1000;
    });
});
person Alex Filipovici    schedule 11.11.2013