yarkov
@yarkov
Помог ответ? Отметь решением.

Как округлить минуты в нужную сторону?

Имеем массив [0, 15, 30, 45].
Это допустимое значение для указания минут.
Получаем метку времени, например 12:33 и её надо как-то привести к нормальному виду, то есть 12:45.
В общем округлить в большую сторону. Есть способ без велосипеда?
  • Вопрос задан
  • 275 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Получить минуты, округлить в большую сторону до 15-минутного значения, установить это значение минут:
function roundTS(ts) {
  var D = new Date(ts);
  var m = 15 + Math.ceil( D.getMinutes() / 15);
  D.setMinutes(m);
  return D.getTime();
}


А если требуется именно с массивом минут, то примерно так:
function roundMinArr( D, arr) {
  var i, m = D.getMinutes();  
  arr.sort((a,b)=>a-b);
  for(i in arr) {
    if( arr[i] < m) continue;
    D.setMinutes(arr[i]);
    return D;
  }
  D.setMinutes(60 + arr[0]);
  return D;
}

var D = roundMinArr( new Date('2017-08-16T12:17+03:00'), [0,15,35,44,59]);
D.toString() // Wed Aug 16 2017 12:35:00 GMT+0300 (MSK)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ну вроде как способ без велосипеда:
Получить количество минут, найти первый элемент в массиве, который больше.
Что вы называете в данном случае велосипедом - не очень понятно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы