как я могу рассчитать частоту посещений веб-страницы - PullRequest
0 голосов
/ 19 июня 2020

Мне нужно рассчитать частоту посещений веб-страницы, я использую ExpressJS, mongoDB и Pug JS

Предполагая, что я сохраняю каждый доступ дата или отметка времени в массиве в базе данных, например:

  • Первый раз: 01 января 2020 г. 12: 00: 00
  • Второй Время: 3 января 2020 г. 15: 00: 00
  • Третий раз: 06 января 2020 г. 15:00: 00
  • Четвертый раз: 8 января 2020 г. 22:00: 00

И после этого должно быть написано

Частота посещений: «Каждые 7 минут» или «Каждые 7 дней», или «Каждые 2 месяца», или «Каждые 3 дня» .. . et c.

Как я могу это сделать? Пожалуйста, сообщите.

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Надеюсь, это поможет. Вы можете получить разницу между датами в миллисекундах, а затем передать функцию для преобразования миллисекунд в секунды, минуты, часы или годы.

var dates = ["Jun 01 2020 12:00:00", "Jun 03 2020 15:00:00", "Jun 06 2020 15:00:00", "Jun 08 2020 22:00:00"];
var fechas = [];
for(i=0; i<dates.length; i++){
	fechas.push(new Date(dates[i]));
}
console.log(fechas);

function convertMiliseconds(miliseconds, format) {
  var days, hours, minutes, seconds, total_hours, total_minutes, total_seconds;
  
  total_seconds = parseInt(Math.floor(miliseconds / 1000));
  total_minutes = parseInt(Math.floor(total_seconds / 60));
  total_hours = parseInt(Math.floor(total_minutes / 60));
  days = parseInt(Math.floor(total_hours / 24));

  seconds = parseInt(total_seconds % 60);
  minutes = parseInt(total_minutes % 60);
  hours = parseInt(total_hours % 24);
  
  switch(format) {
	case 's':
		return total_seconds;
	case 'm':
		return total_minutes;
	case 'h':
		return total_hours;
	case 'd':
		return days;
	default:
		return { d: days, h: hours, m: minutes, s: seconds };
  }
};

var milisecondsDiference = fechas[1] - fechas[0];
console.log(convertMiliseconds(milisecondsDiference, 'h'));		//Output 51 hours
1 голос
/ 19 июня 2020

Вы можете сделать это с помощью небольшой математики. Просто рассчитайте среднее значение разницы между отметками времени. Пример:

const visits = [1592512909123, 1592512910123, 1592512901223, 1592512912753];

let average = 0;
for (let i = 1; i < visits.length; i++){
  average += visits[i] - visits[i-1];
}
average /= visits.length - 1;

console.log(`The site gets visited every ${average / 1000} seconds.`);

Затем вы можете преобразовать среднее значение в секунды / минуты / часы / дни.

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