Я пытаюсь сделать календарь в Angular. Для этого я реализовал функцию перетаскивания, чтобы иметь возможность перемещать одну встречу из дня в другую.
Но у меня есть что-то странное, когда я пытаюсь переместить встречу, она кажется работающей, но когда я попробуйте перенести его с 1 апреля на 31 марта, затем дата будет изменена на 1 марта.
Когда я прекращаю свою встречу, я выдаю изменение с данными о своей встрече и новым днем:
drop(evt) {
let schedule: Schedule;
schedule = evt.data.schedule;
// Emit change
this.scheduleChange.emit({schedule, day: this.day});
}
Затем я редактирую свое назначение:
scheduleChanged(evt) {
const schedule = this.createScheduleFromObject(evt.schedule);
const day = evt.day;
console.log(day);
if (this.isSameDate(schedule.start, schedule.end)) {
schedule.start.setDate(day.getDate());
schedule.start.setMonth(day.getMonth())
schedule.start.setFullYear(day.getFullYear());
schedule.end.setDate(day.getDate());
schedule.end.setMonth(day.getMonth());
schedule.end.setFullYear(day.getFullYear());
console.log(schedule);
}
}
Мне кажется, проблема в том, что я преобразую свой объект в класс расписания:
createScheduleFromObject(obj: any) {
const schedule: Schedule = Object.assign(new Schedule(null, '', '', '', new Date(), new Date()), obj);
console.log(obj.start);
schedule.start = new Date(obj.start);
schedule.end = new Date(obj.end);
console.log(schedule.start);
return schedule;
}
Эта функция возвращает правильную дату Вот вывод журнала консоли:
2020-04-01T21:31:49.640Z
Wed Apr 01 2020 23:31:49 GMT+0200
Но когда я изменяю его в функции scheduleChanged
, даже если день - 31 марта, как у меня в журнале консоли:
Tue Mar 31 2020 00:00:00 GMT+0200
Дата начала моего расписания установлена на:
Sun Mar 01 2020 23:33:19 GMT+0100
Почему?