无法找到 FullCalendar Date 弃用函数

Unable to find FullCalendar Date deprecation function

我正在使用 FullCalendar 生成日程表。我的日期格式很特别,因为它们不是日期,而是表示星期几,如下所示:

"name": "ECEC 301 Advanced Programming for Engineers Lecture",
"days": "MWF",
"times": "02:00 pm - 03:20 pm",
"crn": "11215"

这是一个 JS Fiddle: http://jsfiddle.net/46tnzj72/8/

我在控制台中收到的警告是这样的:

Deprecation warning: moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.
Error
    at Function.createFromInputFallback (https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js:6:7002)
    at da (https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js:6:7484)
    at Ba (https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js:6:11268)
    at Aa (https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js:6:11165)
    at za (https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js:6:10886)
    at Ca (https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js:6:11581)
    at Function.h [as utc] (https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js:6:716)
    at ea (https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.4.0/fullcalendar.min.js:6:7084)
    at Ma.moment.parseZone (https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.4.0/fullcalendar.min.js:6:26684)
    at Ga.N.moment (https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.4.0/fullcalendar.min.js:6:14265)

我已经在我的 JS 中放置了调试器点,但我终其一生都无法找出我在何处调用已弃用的函数或过程。如果您在 Fiddle 中打开控制台,也会弹出警告。我怀疑是我的start.toDate().getTime(),但是我在它执行后立即下了断点,并没有弹出这样的警告。

我在我的 JS 中也做了同样的事情。

有人有什么想法吗?

编辑:好的,所以我取出了部分代码以查看何时会出现该错误。如果删除 events.push() 代码片段,我将不会再收到错误。既然我们知道错误的来源,我该如何解决呢?

要停止看到警告,请不要加载带有字符串作为日期的 FC 事件。使用具有显式格式字符串的矩对象。

将此粘贴在 jsfiddle 中 addEventSource 函数的末尾可以消除错误。

for(var i in events){
    events[i].start = moment(events[i].start,"YYYY-MM-DD hh:mm a");
    events[i].end = moment(events[i].end,"YYYY-MM-DD hh:mm a");
    console.log(events[i]);
}

JSFiddle


如果您想知道此错误是什么,这是一条警告消息,警告解析某些类型的日期字符串将很快被弃用。提到原因here:

using Date to create a moment from string, passed from the user is extremely unpredictable, and it turns out to work somewhat and then bite you in an edge case when you're not careful

因此,当您使用 FullCalendar 时,请使用 momentjs 对象而不是字符串。