Vuejs: как зациклить время начала, чтобы умножить время окончания на var x

#vue.js #vuejs2 #vue-cli #vue-cli-3

#vue.js #vuejs2 #vue-cli #vue-cli-3

Вопрос:

У меня есть данные start_time, end_time, x и результат. Я хочу отобразить его в опции выбора, первая опция — это исходные данные start_time , и продолжает цикл, кратный переменной x , и заканчивается до тех пор, пока значение не станет равным end_time . вот ожидания.

введите описание изображения здесь

Вот мой взгляд:

 <select class="form-control">
    <option>08:00:00</option>
    <option>08:15:00</option>
    <option>08:30:00</option>
    <option>08:45:00</option>
    <option>09:00:00</option>
    <option>...</option>
    <option>19:00:00</option>
</select>
  

Это мой код:

 data: function () {
    return {
        start_time: '08:00:00',
        end_time: '19:00:00',
        x: 15,
        result:'',
    }
},
computed:{
}
  

Ответ №1:

Что вы можете сделать, это создать вычисляемое свойство, которое возвращает массив всех доступных параметров времени с учетом start_time и end_time ограничений. Затем зациклите его на вашем <option/> элементе с помощью v-for .

   <select class="form-control">
    <option v-for="(time, index) in times" :key="index">{{time}}</option>
  </select>
  
 computed: {
  times() {
    // transform the start_time and end_time to Date for easier comparison.
    let startTime = new Date(`1/1/1970 ${this.start_time}`);
    const endTime = new Date(`1/1/1970 ${this.end_time}`);

    // This interval is in Minutes.
    const interval = this.x * 60000;

    // The result array where we will store the time
    const results = [];

    while (startTime.getTime() <= endTime.getTime()) {
      results.push(`${this.formatTime(startTime)}`);
      startTime = new Date(startTime.getTime()   interval);
    }

    return results;
  }
},
methods: {
  formatTime(date) {
    // format the date here...
    return '00:00:00';
  }
}
  

Для форматирования даты вы можете либо использовать стороннюю библиотеку для выполнения этой работы, либо использовать ванильный javascript.

 formatTime(date) {
  const hours = date.getHours().toString().padStart(2, "0");
  const minutes = date.getMinutes().toString().padStart(2, "0");
  const seconds = date.getSeconds().toString().padStart(2, "0");
  return `${hours}:${minutes}:${seconds}`;
}
  

Вот рабочая демонстрация.