Установить время на основе чч:мм длина, или установить продолжительность времени в зависимости от времени


Я использую ионные 3, угловые 5, и время-часовой пояс. У меня есть форма ввода, которая отображает EndTime (в формате 01:23 Am) И еще, что отображение длительности (в формате 01:30, который представляет чч:мм), рассчитанная от указанной EndTime и StartTime оба DateTime значения. Когда пользователь изменяет EndTime мне это нужно для обновления lengthи когда пользователь обновляет длину мне нужно, чтобы вычислить время окончания.

Я чувствую, что усложнять это и делает функция слишком долго. В любом случае, чтобы улучшить это?

setSessionEndTime() {
  let time = this.sessionForm.controls['sessLength'].value.split(':');
  const endTime = moment(this.startTime).add(time[0], 'hours').add(time[1], 'minutes');
  const newEndTime = (moment(endTime).toISOString());
  this.sessionForm.controls['sessEndTime'].setValue(newEndTime, {emitEvent: false});
  this.endTime = newEndTime;
}

setSessionLength() {
  const startTime = moment(this.startTime);
  const endTime = moment(this.endTime);
  let totalHours = (endTime.diff(startTime, 'hours'));
  const totalMinutes = endTime.diff(startTime, 'minutes');
  const clearMinutes = totalMinutes % 60;
  // Must check if value is less than 10 and prepend 0 to it otherwise the datetime input doesnt accept the value
  const sessLength: string = (totalHours < 10) ?
                             `0${totalHours}:${clearMinutes}` :
                             `${totalHours}:${clearMinutes}`;
  this.defaultSesLength = sessLength;
  this.sessionForm.controls['sessLength'].setValue(sessLength, {emitEvent: false});
}


Комментарии