【问题标题】:How can I convert Google calendar events to date object for react-big-calendar如何将 Google 日历事件转换为 react-big-calendar 的日期对象
【发布时间】:2019-05-12 19:56:32
【问题描述】:

所以我想为 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) 以及许多不同的谷歌搜索建议,包括各种 .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 请求,所以我没有任何数据可以使用......我真的让这种方式变得比它需要的更困难。

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

【问题讨论】:

  • 您提到您正在将其转换为后端的Date 对象。您是否尝试过将其转换为前端的Date 对象?
  • 是的,我最终遇到了类似的问题。
  • 我查看了他们的文档,该组件有两个道具。一个用于事件数组,一个用于当前日期。您是否传递了 date 道具,它是 Date 对象吗?见:intljusticemission.github.io/react-big-calendar/examples/…

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


【解决方案1】:

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)
}));

【讨论】:

  • 好的,我试图添加一个完整的其他功能,而不是将此位添加到我的 fetcher 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 2010-09-07
  • 2022-12-21
  • 1970-01-01
  • 2014-05-31
  • 2019-08-18
  • 2015-11-22
相关资源
最近更新 更多