2015-04-10 6 views
1

Это по существу тот же вопрос as here, но ответа там нет. Я немного более конкретный: он возвращает endDate + 1 (кажется). При использовании функции FullCalendar.eventResize и отображения результата event.end.format() он сообщает дату окончания как день позже, чем то, что визуально отображается в календаре, по крайней мере, как мы, люди, читаем его.FullCalendar eventResize() возвращает дату + 1?

Это мероприятие на целый день. Событие доступно для редактирования, отображается в режиме «Месяц». Если у вас есть событие, которое охватывает день - скажем, 2015/4/08 - он заполняет всю площадь. Если вы затем перетащите конечную точку этого события, чтобы визуально покрыть два дня вместо одного, то это должно быть 2015/4/08-2015/4/09 включительно, функция event.end.format() возвращает значение «2015- 04-10 'в качестве новой даты окончания.

Теперь, возможно, он говорит мне, что он заканчивается в 00:00:00 2015/4/10, но это не то, что я ищу. Я хочу, чтобы он закончился в 23:59:59 2015/4/09; это то, что показывает визуальная индикация. Если я отправлю отчет в базу данных, что новая дата окончания - 2015/4/10, это будет неправильная дата с точки зрения пользователя. Кроме того, это относительно легко обрабатывается в самой БД путем вычитания одного из даты, но мне просто интересно, была ли официальная причина этого, если это ошибка, неправильный код и т. Д.

I created a JSFiddle чтобы продемонстрировать все это. Просто перетащите конечную точку события вокруг, чтобы получить всплывающее окно с новой датой окончания. Вот код, используемый в JSFiddle:

$(document).ready(function() { 
    var httpXHR, fmpurl; 
    currDate = "2015/7/01"; 

    $("#calendar").fullCalendar({ 
     defaultDate: currDate, 
     editable: true, 
     allDayDefault: true, 
     eventStartEditable: true, 
     eventDurationEditable: true, 
     dayClick: function() { 
      alert("a day has been clicked!"); 
     }, 

     eventDrop: function (event, delta, revertFunc) { 
      if (!confirm(event.title + " was dropped on " + event.start.format() + ".\nAre you sure about this change?")) { 
       revertFunc(); 
      } 
     }, 

     eventResize: function (event, delta, revertFunc) { 
      if (!confirm(event.title + " end is now " + (event.end.format()) + ".\n\nIs this okay?")) { 
       revertFunc(); 
      } else { 
       alert("Date was changed to: " + event.end.format()); 
      } 
     }, 

     events: [{ 
      id: 1, 
      title: "Project 1", 
      start: "7/1/2015", 
      end: "7/3/2015" 
     }, { 
      id: 2, 
      title: "Project 2", 
      start: "7/3/2015", 
      end: "7/7/2015" 
     }, { 
      id: 3, 
      title: "Project 3", 
      start: "7/7/2015", 
      end: "7/7/2015" 
     }, { 
      id: 4, 
      title: "Project 4", 
      start: "7/7/2015", 
      end: "7/11/2015" 
     }, { 
      id: 5, 
      title: "Project 5", 
      start: "7/14/2015", 
      end: "7/16/2015" 
     }, { 
      id: 6, 
      title: "Project 6", 
      start: "6/18/2015", 
      end: "7/3/2015" 
     }, { 
      id: 7, 
      title: "Project 7", 
      start: "7/30/2015", 
      end: "8/15/2015" 
     }, { 
      id: 15, 
      title: "Project 15", 
      start: "6/08/2015", 
      end: "6/19/2015" 
     }] 
    }); 

}); 

- Джастин

ответ

2

Это некоторое немного неинтуитивное поведение.

Забудьте о перетаскивании и изменении размера, они не имеют к этому никакого отношения. Посмотрите на Project 1. Длинны два дня в календаре, но это указано дата

{start: "7/1/2015", 
end: "7/3/2015"} 

Документы упоминают об этом в разделе Event Object под end:

Исключительная даты/время событие заканчивается. Необязательный.

Ввод Moment-ish, как и строка ISO8601. По всему API этот станет настоящим объектом Moment.

Это момент сразу после окончания мероприятия. Например, , если последний полный день мероприятия - четверг, эксклюзивный конец мероприятия будет 00:00:00 в пятницу!

Поскольку дата окончания не имеет времени, время «00:00:00». И на этот раз сразу после события.

+0

Отлично, спасибо! Это именно то, что я искал. Да, кажется немного неинтуитивным. Мне просто нужно будет переделать все, когда они вернутся к БД, или исправить их по пути в JavaScript. – Cronk

Смежные вопросы