Похоже, вам нужна функция, которая вычитает одну дату из другой и округляет разницу до ближайшей минуты.
Это невозможно сделать с помощью одного аргумента, например, функции round
в вашем вопросе; вам нужна функция, которая принимает обе даты в качестве аргументов.
Я не слишком знаком с моментом, но вот функция, которая должна работать для встроенных дат.
РЕДАКТИРОВАТЬ: согласно комментариям OP, я обновил функцию, чтобы изменить d2
вместо возвращения diff.
MS_IN_MINUTES = 60000;
roundAway = (d1, d2) => {
let diff = d2 - d1 // Difference in milliseconds (+ or -)
let positive = diff > 0 // Whether we should add later
diff = Math.abs(diff) // Difference in milliseconds (+)
diff = diff / MS_IN_MINUTES // Difference in minutes (not rounded)
diff = Math.ceil(diff) // Difference in minutes (rounded up)
let roundedAway = d1.getTime()
if (positive) {
roundedAway += diff * MS_IN_MINUTES
}
else {
roundedAway -= diff * MS_IN_MINUTES
}
d2.setTime(roundedAway)
}
let date1 = new Date("2019-06-29 21:25:38+00");
console.log('date1:', date1)
let date2 = new Date("2019-06-29T21:25:40.000+00:00");
console.log('date2:', date2)
let date3 = new Date("2019-06-29T21:24:36.000+00:00");
console.log('date3:', date3)
console.log('Unchanged date1:', date1);
roundAway(date1, date2);
console.log('Rounded date2:', date2);
roundAway(date1, date3);
console.log('Rounded date3:', date3);
Надеюсь, это поможет!