Предупреждение об устаревании при установке даты в FullCalendar - PullRequest
0 голосов
/ 02 июля 2018

Как я могу заставить fullCalendar принимать разные форматы даты и времени?

Например, мои события имеют дату в таком формате:

02.07.2018 08:55:00 

Для этого формата даты и времени я получаю предупреждение от moment.js

«Устаревшее предупреждение: предоставленное значение не является признанным форматом ISO».

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Я нашел решение этой проблемы, установив функцию eventDataTransform при инициализации fullCalendar. В нем я преобразовываю параметры данных в допустимый формат. Частичный код с решением

$('#calendar').fullCalendar({

    ...

    eventDataTransform: function (event) {
        event.start = moment(event.start, 'DD.MM.YYYY HH:mm');
        event.end = moment(event.end, 'DD.MM.YYYY HH:mm');
        return event;
    }

    ...

});
0 голосов
/ 02 июля 2018

Предупреждение об устаревании связано с тем, что вы можете анализировать дату, не указывая формат в moment. Moment JS внутренне использует new Date(), для которого дата должна иметь формат ISO или RFC2822 .

Устаревание связано с тем, что разница в межбраузерной поддержке при разборе строки даты.

Chrome разбирает new Date("02.07.2018 08:55:00") до Wed Feb 07 2018 08:55:00 GMT+0530 (India Standard Time).

Firefox не анализирует то же самое и выдает Invalid Date.

Проверено в Chrome и Firefox в Mac и Linux Fedora.

Чтобы преодолеть эти межбраузерные издержки, moment считает формат, который вы передаете, параметром Очевидно, что дата, которую вы используете, не в этих форматах.

Чтобы отключить предупреждение об устаревании, выполните любое из следующих действий

  1. Вы должны упомянуть формат даты через объект момента.

moment("02.07.2018 08:55:00","DD.MM.YYYY HH:mm:ss")

  1. Подавить с помощью moment.suppressDeprecationWarnings = true;, до момента даты построения.

В приведенном ниже примере добавляется событие к July 2, 2018 в fullCalendar, и формат даты задается, как указано.

$(function() {
  var fc_date_format = "DD.MM.YYYY HH:mm:ss";
  var event = {id:1, title:"Logged in to StackOverflow", start:moment("02.07.2018 12:30:45", fc_date_format)}
  $('#calendar').fullCalendar({
      weekends : false
  });
  $('#calendar').fullCalendar("renderEvent", event, true);
});
<link href="https://fullcalendar.io/releases/fullcalendar/3.9.0/fullcalendar.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script src="https://fullcalendar.io/releases/fullcalendar/3.9.0/fullcalendar.min.js"></script>

<div id='calendar'></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...