Отметка времени Javascript сгруппирована по X минутам - PullRequest
0 голосов
/ 02 мая 2018

Я хочу создать список меток времени, сгруппированных по X минутам.

Например, у меня есть минимальное значение данных и максимальное значение даты и времени.

minDate = 1524548466000; // Tuesday, April 24, 2018 5:41:06 AM
maxDate = 1524577986000; // Tuesday, April 24, 2018 1:53:06 PM

Итак, я хочу создать массив меток времени, начиная с Вторник, 24 апреля 2018 г. 5: 40: 00 AM до Вторник, 24 апреля 2018 г., 13:55:00 используя JavaScript.

Я хочу этот вывод:

[1524548400000,1524548700000,1524549000000, ... 1524578100000]

Как я могу это сделать?

Ответы [ 4 ]

0 голосов
/ 04 мая 2018

если длительность равна 5 минутам, вы можете установить переменную длительности следующим образом.

var duration = 5 * 60 * 1000;
endTime = endTime - endTime % duration;
startTime = startTime - startTime % duration;

for(var i=startTime;i<endTime;i+=duration){
     arr.push(i);
}
0 голосов
/ 02 мая 2018

Здесь нужная вам функция

function timestampGrouping(minDate, maxDate, x){
    var gap = x * 60000 //60000 = 1minute;
    minDate = Math.floor(minDate/gap)*gap;
    maxDate = Math.ceil(maxDate/gap)*gap;

    var arr = [];

    while(minDate <= maxDate){
        arr.push(minDate);
        minDate += gap;
    }
    return arr;
}

var groupingArr = timestampGrouping(1524548466000, 1524577986000, 5);
console.log(groupingArr);

Math.floor и Math.ceil - для поиска ближайшего значения разрыва, которое вам требуется, и просто зациклите значение, чтобы получить весь требуемый минутный разрыв.

minDate, maxDate и значение пробела могут быть любыми.

Надеюсь, это то, что вам нужно.

0 голосов
/ 02 мая 2018

Вы можете разделить данное Время Unix (Epoch Time) и разделить его на произведение желаемых минут, секунд и 1000 на миллисекунды.

5 minutes * 60 seconds * 1000 milliseconds = 300000

Для перемещения событий в одном и том же слоте используйте

Math.floor(time / 300000)
0 голосов
/ 02 мая 2018

Вот мое решение. Я просто считаю вторую и сравниваю с maxDate.

var minDate = new Date(1524548466000); // Tuesday, April 24, 2018 5:41:06 AM
var maxDate = new Date(1524577986000); // Tuesday, April 24, 2018 1:53:06 PM
var listTimestamp = [];
while (minDate.getTime() !== maxDate.getTime()) {
  minDate.setSeconds(minDate.getSeconds() + 1);
  listTimestamp.push(minDate.getTime());
}
console.log(listTimestamp);
...