Как создать еженедельное повторение с помощью выбора даты - PullRequest
1 голос
/ 31 октября 2019

Я хотел бы создать повторение события с помощью указателя даты и <v-text-field>, где пользователи могут выбирать, сколько недель повторяется пример события:

Я выбираю понедельник 18 октября и хочу повторить событиедважды, так что я должен сделать 18 + 7 = 25 октября, а затем 25 + 7 = 32 октября, поэтому 1 ноября

Я не знаю, как сделать математику в моем сценарии:

<v-col cols="12" sm="6">
  <VueCtkDateTimePicker
    v-model="create_event.start"
    format="YYYY-MM-DD HH:mm"
    formatted="YYYY-MM-DD HH:mm"
    label="Date et heure de début"
    minuteInterval="10"
  />
  <br />
  <VueCtkDateTimePicker
    v-model="create_event.end"
    format="YYYY-MM-DD HH:mm"
    formatted="YYYY-MM-DD HH:mm"
    label="Date et heure de fin"
    minuteInterval="10"
  />
</v-col>
<v-col cols="12">
  <v-text-field
    label="Nombre de répétition"
    v-model="create_event.nb"
  ></v-text-field>
</v-col>

Ответы [ 2 ]

1 голос
/ 31 октября 2019

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

Допустим, повторение ввода в текстовом поле = 7

new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 7)

Возвращается через 7 дней после текущей даты

Ниже приведен пример кода выше:

var startDate = new Date(2019, 9, 25); // 10/25/2019 (MM/DD/YYYY)
var repetetion = 7;

var endDate  = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + repetetion);

console.log(endDate);
0 голосов
/ 04 ноября 2019

это мой сценарий:

async validate(){
  var url = "https://sportmanagementsystemapi.herokuapp.com/api/event/" + localStorage.id;
  var bodyFormData = new FormData();
  bodyFormData.set("titre", this.create_event.name);
  bodyFormData.set("nom_coach", this.create_event.nom_coach);
  bodyFormData.set("details", this.create_event.details);
  bodyFormData.set("date_debut", this.create_event.start);
  bodyFormData.set("date_fin", this.create_event.end);
  bodyFormData.set("role", this.create_event.role);
  bodyFormData.set("facture_client", this.create_event.facture_client);
  bodyFormData.set("facture_coach", this.create_event.facture_coach);
  await axios.post(url, bodyFormData, {
    headers: {
      token: localStorage.token
    }
  });
  var i;
  if(this.create_event.nb != 0) {
    for(i = 0; i < this.create_event.nb; i++) {
      var oldTime = this.create_event.start.split(' ')[1]; 
      var start = new Date(this.create_event.start); 
      var [date, month, year] = new Date(start.getFullYear(), start.getMonth(), start.getDate()+7).toLocaleDateString().split('/'); 
      this.create_event.start = year + '-' + month + '-' + date + ' ' + oldTime;
      var oldTimeend = this.create_event.end.split(' ')[1]; 
      var end = new Date(this.create_event.end); 
      var [date, month, year] = new Date(end.getFullYear(), end.getMonth(), end.getDate()+7).toLocaleDateString().split('/'); 
      this.create_event.end = year + '-' + month + '-' + date + ' ' + oldTimeend;
      bodyFormData.set("titre", this.create_event.name);
      bodyFormData.set("nom_coach", this.create_event.nom_coach);
      bodyFormData.set("details", this.create_event.details);
      bodyFormData.set("date_debut", this.create_event.start);
      bodyFormData.set("date_fin", this.create_event.end);
      bodyFormData.set("role", this.create_event.role);
      bodyFormData.set("facture_client", this.create_event.facture_client);
      bodyFormData.set("facture_coach", this.create_event.facture_coach);
      await axios.post(url, bodyFormData, {
        headers: {
          token: localStorage.token
        }
      });
    }
  }
  this.dialog = false;
  window.location.reload();
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...