Как конвертировать миллисекунды в дату и использовать их в графике в JS - PullRequest
1 голос
/ 07 мая 2019

Я пытаюсь создать график на сайте. У меня проблема с анализом отметки времени из файла CSV в JS. Я использую анализ папы для анализа файлов CSV. Я хотел знать, как я могу конвертировать миллисекунды в дату / время и отображать их на графике.

Я пробовал много вещей, но я думаю, что Date.parse - верный способ сделать это, и я видел много примеров в Интернете, это то, как далеко я продвинулся.

Вот так выглядит мой CSV.

    Time    Power Production    Lighting
    Wed Apr 10 12:23:26 2019    3405.98 38.33
    Wed Apr 10 12:23:27 2019    3408.72 107.4
    Wed Apr 10 12:23:28 2019    3335.75 5.22
    Wed Apr 10 12:23:29 2019    3403.39 6.72
    Wed Apr 10 12:23:30 2019    3387.7  55.97
    Wed Apr 10 12:23:31 2019    3350.59 95.78
    Wed Apr 10 12:23:32 2019    3347.09 105.96
    Wed Apr 10 12:23:33 2019    3476.16 16.85
    Wed Apr 10 12:23:34 2019    3413.97 85.11
    Wed Apr 10 12:23:35 2019    3491.64 107.02
    Wed Apr 10 12:23:36 2019    3381.6  76.6
    Wed Apr 10 12:23:37 2019    3377.78 110.22
    Wed Apr 10 12:23:38 2019    3354.73 82.62
    Wed Apr 10 12:23:39 2019    3351.04 98.1
    Wed Apr 10 12:23:40 2019    3467.22 1.48
    Wed Apr 10 12:23:41 2019    3375.16 63.56
    Wed Apr 10 12:23:42 2019    3321.97 42.16
    Wed Apr 10 12:23:43 2019    3446.69 118.14
    Wed Apr 10 12:23:44 2019    3367.81 39.58

Вот мой код

function createGraph3(data) {
var time = ['Time '];
var first = ['First Sensor'];
var second = ['Second Sensor'];

for (var i = 1; i < data.length; i++) {
    time.push(Date.parse(data[i][0]));
    first.push(parseFloat(data[i][1]));
    second.push(parseFloat(data[i][2]));
}
var d = new Date();
d.setTime(time);


console.log(time);
console.log(first);


var powerr = c3.generate({
    bindto: '#powerr',
    data: {
        columns: [

            first,
            second
        ]
    },
    axis: {
        x: {
            type: 'category',
            categories: d, 
            tick: {
                multiline: false,
                culling: {
                    max: 4 
                }
        }
    }
    }
});

}  

parseData3(createGraph3);

Как отобразить отметку времени на графике? Я пытался понять это, но я застрял.

1 Ответ

0 голосов
/ 09 мая 2019

Я не знаю, является ли это вашей проблемой, так как вы не предоставили рабочий пример или то, что вы ожидаете получить в результате кода, но:

var time = ['Time '];

Назначает массив время с одним элементом, строка «Время». Тогда:

time.push(Date.parse(data[i][0]));

Добавляет дополнительный элемент, я полагаю, строку типа «Ср 10 апреля 12:23:26 2019». Цикл для добавляет по одному для каждой записи (я полагаю), поэтому время выглядит следующим образом:

['Time ','Wed Apr 10 12:23:26 2019','Wed Apr 10 12:23:27 2019', ...];

Тогда есть:

var d = new Date();
d.setTime(time);

, которая создает новую дату, затем пытается установить для ее значения времени значение время , что эквивалентно:

d.setTime(['Time ','Wed Apr 10 12:23:26 2019','Wed Apr 10 12:23:27 2019', ...]);

Когда вызывается setTime , он сначала вызывает ToNumber для значения, которое в приведенном выше случае почти наверняка приведет к NaN, поэтому код эффективен:

d.setTime(NaN);

, что приводит к неверной дате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...