Как округлить время или дату до интервала?
Подскажите как можно округлить время или дату до интервала из массива?
Допустим сейчас время 22.09.2020 09:31:56
то результат должен быть таким (округлять в меньшую сторону)
60 -> 9:31 // час:минуты = если передать interval[0]
300 -> 9:30 // час:минуты = если передать interval[1]
900 -> 9:30 // час:минуты = если передать interval[2]
1800 -> 9:30 // час:минуты = если передать interval[3]
3600 -> 9:00 // час:минуты = если передать interval[4]
14400 -> 9:00 // час:минуты = если передать interval[5]
21600 -> 9:00 // час:минуты = если передать interval[6]
43200 -> 9:00 // час:минуты = если передать interval[7]
86400 -> 22.09 // день.месяц = если передать interval[8]
let interval = [
60, // '1m'
300, // '5m'
900, // '15m'
1800, // '30m'
3600, // '1h'
14400, // '4h'
21600, // '6h'
43200, // '12h'
86400 // '1d'
];
let now = new Date().getTime(); // 1600755549267
function getDateTime(now, interval){
return new Date(now);
}
// сам результат должен быть при вызове функции getDateTime
console.log(getDateTime(now, interval[2])); // к примеру на выводе должно быть "9:30"
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Делите на интервал (не забываем про миллисекунды, у вас секунды) округляем и умножаем обратно. Считаем по формуле
CountOfPartsMilliseconds = Round(TimeMilliseconds/PartInMilliseconds)
TimeMilliseconds = CountOfPartsMilliseconds * PartInMilliseconds
let interval = [
60, // '1m'
300, // '5m'
900, // '15m'
1800, // '30m'
3600, // '1h'
14400, // '4h'
21600, // '6h'
43200, // '12h'
86400 // '1d'
];
let now = new Date().getTime(); // 1600755549267
function getDateTime(now, interval){
return new Date(Math.floor(new Date(now).getTime()/(interval*1000)) *(interval*1000));
}
// сам результат должен быть при вызове функции getDateTime
console.log(getDateTime(now, interval[2])); // к примеру на выводе должно быть "9:30"
console.log(new Date(1600755549267))
console.log(`округленное до минуты: ${getDateTime(new Date(1600755549267), interval[0])}`)
console.log(`округленное до 5 мин минут: ${getDateTime(new Date(1600755549267), interval[1])}`)
console.log(`округленное до 15 мин минут: ${getDateTime(new Date(1600755549267), interval[2])}`)
console.log(`округленное до 30 мин минут: ${getDateTime(new Date(1600755549267), interval[3])}`)
console.log(`округленное до 1 час: ${getDateTime(new Date(1600755549267), interval[4])}`)
console.log(`округленное до 4 часов: ${getDateTime(new Date(1600755549267), interval[5])}`)
console.log(`округленное до 6 часов: ${getDateTime(new Date(1600755549267), interval[6])}`)
console.log(`округленное до 12 часов: ${getDateTime(new Date(1600755549267), interval[7])}`)
console.log(`округленное до 24 часов: ${getDateTime(new Date(1600755549267), interval[8])}`)
Если нужен определенный формат вывода то смотрите сюда
console.log(new Date().toLocaleString())