首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FullCalendar:弃用警告:提供的值不符合公认的RFC2822或RFC2822格式

FullCalendar:弃用警告:提供的值不符合公认的RFC2822或RFC2822格式
EN

Stack Overflow用户
提问于 2018-12-15 06:15:24
回答 1查看 1.4K关注 0票数 0

我尝试了许多事情,但无法理解我所缺乏的地方。也尝试过不同的解决方案。

代码语言:javascript
复制
$('#calendar').fullCalendar({
      eventClick: function(eventObj, jsEvent, view) {
          $("#eventSubTitle").html(eventObj.patient);
          $("#eventLink").attr('href', eventObj.url);
          $("#eventHeader").html(eventObj.appointmentType);
          $("#eventStartTime").html(eventObj.start._i);
          $("#eventEndTime").html(eventObj.end._i);
          $("#appointmentId").val(eventObj.id);
          $("#eventDetailModal").modal('show');
      },
      timeFormat: 'hh:mm a',
      header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,basicWeek,basicDay'
      },
      defaultView: 'basicWeek',
      defaultDate: $.datepicker.formatDate('mm/dd/yy', new Date()),
      editable: true,
      eventLimit: true, // allow "more" link when too many events
      events:  ${raw(allList as String)},
      eventRender: function(event, element) { 
        element.find('.fc-title').append(" - " + event.patient); 
      },
      eventAfterRender: function (event, element, view) {
          var dataHoje = new Date();
          if (event.start < dataHoje && event.end > dataHoje) {
              element.css('background-color', 'green');
          } else if (event.start < dataHoje && event.end < dataHoje) {
              element.css('background-color', 'red');
          } else if (event.start > dataHoje && event.end > dataHoje) {
              element.css('background-color', '#000080');
          }
      }, 
    });

你能建议我为上面的代码做些工作吗?

EN

回答 1

Stack Overflow用户

发布于 2018-12-17 09:59:47

问题是$.datepicker.formatDate('mm/dd/yy', new Date())将生成mm/dd/yy格式的字符串。但这是模棱两可的--如果今天是2019年1月3日,它将输出01/03/19...but,那么日历怎么能确定它不是dd/mm/yy格式--也许你指的是3月1日?它不可能知道。它所拥有的只是原始字符串,没有任何上下文。

这里的解决方案很简单:不要使用模糊的日期格式。事实上,如果您可以避免使用字符串,那么就根本不要使用字符串--只要可能,就使用Date或MomentJS对象。

(这些对象在内部携带日期信息,而不考虑日期/时间可能出现的大量人类可读的字符串格式。它们可以以任何一种格式输出信息,但它们并不是这样存储的,因此对数据的意义没有任何疑问。)

在这种情况下,可以很容易地避免使用字符串:

代码语言:javascript
复制
defaultDate: new Date()

是完全有效的- fullCalendar将接受momentJS构造函数也接受的任何日期字符串或对象(或者它将接受预先生成的momentJS对象)。你根本不需要格式化它。

但是,由于defaultDate在默认情况下将是今天的日期,所以您实际上可以完全删除该行--您只是将其设置为已经是默认值的值。

当然,你的事件数据也有同样的问题--我看不见,所以我不能评论。但是,您应该确保您的开始日期和结束日期是一个有效的,明确的格式,以便fullCalendar可以确定您的意思。

有关这方面的更多文档,请参见http://momentjs.com/docs/#/parsing/string/https://fullcalendar.io/docs/defaultDatehttps://fullcalendar.io/docs/moment

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53790044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档