如何将Google日历事件转换为react-big-calendar

时间:2019-05-12 19:56:32

标签: javascript arrays datetime momentjs react-big-calendar

所以我想将周视图用于RBC。我不断  TypeError:date [(“ get” + method)]不是函数

有一些问题报告都说我需要一个date对象,实际上,当我使用此示例时,我可以打开日历

var myEventsList = [{
 {
    'title': 'Meeting',
    'start': new Date(2017, 3, 12, 10, 30, 0, 0),
    'end': new Date(2017, 3, 12, 12, 30, 0, 0),
    desc: 'Pre-meeting meeting, to prepare for the meeting'
 },
   {
    'title': 'Lunch',
      'start':new Date(2017, 3, 12, 12, 0, 0, 0),
      'end': new Date(2017, 3, 12, 13, 0, 0, 0),
    desc: 'Power lunch'
  }]

所以我知道我需要将start: 2019-05-14T12:00:00.000Z,转换为new Date( x,x,x,x,x)

我已经尝试过在后端执行类似这样的操作

      for (let i = 0; i < data.length; i++) {
          events.push({
          title: data[i].summary,
          start: new Date(data[i].start.dateTime),
          end: new Date(data[i].end.dateTime)

我也尝试了moment(data[i].start.dateTime)以及许多不同的Google搜索建议,包括各种.format()、. todate()等,但我一直遇到错误。

更新:

我也尝试过使用此位在前端进行设置

 const events=[]
 const makeDatobj = (data) =>{
   events.map(event => ({
    title : event.title,
     start : new Date(event.start)
   }));

我希望以此初始化

    <BigCalendar
            ...
             localizer={localizer}
             events={events=>makedatobj(data)}
             step={70}
             timeslots={2}
             defaultView="week"
             ...
           />

但这给了我 TypeError: data.map is not a function

这只是提醒我,我不知道.map()是如何工作的,在尝试使用它时,我还会遇到类似的问题...我尝试了其他几种解析传入数据的方法相似程度的故障。我注意到当我尝试处理传入的数据时,我无意中关闭了我的api请求,因此我没有任何数据可以使用。...我确实使这种方式变得比需要的更加困难。 / p>

我只需要一个简单的答案。  我该如何转换。 start: 2019-05-14T12:00:00.000Z,开始:new date( x,x,x,x,x)吗?

1 个答案:

答案 0 :(得分:0)

Date constructor也可以将字符串作为参数,因此您可以执行以下操作:

start : new Date("2019-05-14T12:00:00.000Z")

所以听起来您的后端应该像这样,以字符串形式返回日期:

for (let i = 0; i < data.length; i++) {
  events.push({
  title: data[i].summary,
  start: data[i].start.dateTime,
  end: data[i].end.dateTime
}

您的前端代码应如下所示,将其转换为Javascript日期:

events.map(event => ({
  title : event.title,
  start : new Date(event.start)
}));