Вы анализируете даты сервера с помощью конструктора new Date(dateString)
.Это не рекомендуемый подход, поскольку он подвержен подобным проблемам.
С MDN
Примечание: синтаксический анализ строк даты с помощью конструктора Date (иDate.parse, они эквивалентны) настоятельно не рекомендуется из-за различий и несоответствий браузера.Поддержка строк формата RFC 2822 предоставляется только по соглашению.Поддержка форматов ISO 8601 отличается тем, что строки только с датой (например, «1970-01-01») обрабатываются как UTC, а не как локальные.
Поскольку у вас есть проблемы только в IE и Safari, онпредполагает, что проблема вызвана различным поведением браузера.Вы можете проверить формат дат, которые приходят с сервера, Пожалуйста, обратитесь к этой статье и обновить свой вопрос?Я не могу дать вам ответ, не увидев фактический формат дат, с которыми вы работаете.
Одним из возможных решений будет сериализация серверных дат в формате, который может анализировать планировщик на стороне клиента.Например, вы можете проверить, как это делается здесь: учебник , github repo
Если у вас нет контроля над форматами даты сервера, то вам понадобитсяизменить функцию разбора.Чтобы предложить что-то для этого, мне нужно знать, как выглядят ваши даты.
ОБНОВЛЕНИЕ
Поскольку формат дат, который вы получаете из бэкэнда, соответствует xml_date значение конфигурацииЯ считаю, что все должно начать работать, как только вы удалите эту строку:
scheduler.templates.xml_date = function(value){ return new Date(value); };
Планировщик автоматически генерирует функцию xml_date из значения конфигурации, для этого не требуется дополнительная настройка.Если вы хотите определить шаблон явно, вы можете сделать что-то вроде этого:
scheduler.templates.xml_date = scheduler.date.str_to_date("%Y-%m-%d %H:%i");
В целом, вам нужно определить этот шаблон, только если формат сервера изменяется динамически, или если сервер возвращает формат, который не можетвыражается в xml_date config (например, даты или метки времени ISO)
Кроме того, обязательно добавьте свойство id (без подчеркивания) к данным вашего сервера.Планировщик на стороне клиента не распознает поле _id , и в результате вы не сможете изменять существующие записи на стороне клиента.
Только настройки event.id = event._id
перед возвратом данных вклиент должен сделать трюк.