如何使fullCalendar接受不同的日期和时间格式?
例如,我的活动的日期格式如下:
02.07.2018 08:55:00
对于这种日期时间格式,我会从moment.js收到警告
“不建议使用的警告:提供的值不是公认的ISO格式”。
答案 0 :(得分:2)
不赞成使用此警告是因为您可能在分析日期时未在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
。
在Mac和Linux Fedora的Chrome和Firefox中进行了验证。
为克服跨浏览器的开销,moment
将您传递的格式视为参数。显然,您使用的日期不是这些格式。
要禁止弃用警告,请执行以下任一操作
moment("02.07.2018 08:55:00","DD.MM.YYYY HH:mm:ss")
moment.suppressDeprecationWarnings = true;
禁止显示。下面的示例在fullCalendar中将事件添加到July 2, 2018
,并且日期格式按照指定的方式给出。
$(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>
答案 1 :(得分:1)
我通过在初始化fullCalendar时设置eventDataTransform函数找到了解决此问题的方法。在其中,我将数据参数转换为有效格式。解决方案的部分代码
$('#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;
}
...
});