Moment.js正在使用React Big Calendar将日期转换为今天日期

时间:2018-06-27 01:58:37

标签: reactjs google-calendar-api momentjs react-big-calendar

我遇到一个问题,即使日期正在瞬间解析,该日期也将转换为今天的日期。看来Moment正在将日期转换为今天的日期。我相信我只是错误地使用了脚本。我不熟悉Moment。任何帮助将不胜感激。

export function getEvents (callback) {
request
.get(url)
.end((err, resp) => {
  if (!err) {
    const events = [];
    JSON.parse(resp.text).items.map((event) => {
      events.push({
        start: moment(event.start.date).toDate()|| moment(event.start.dateTime),
        end: moment(event.end.date).toDate() || moment(event.end.dateTime),
        title: event.summary,
      })
    });
    callback(events)
  }
})

这是一个跟踪示例,其中Google日历的“开始”日期采用时间格式。 U This is an image where the startDate on the JSON is from Google Calendar

这是脚本enter image description here的转换和痕迹

这是通话中的实时日期:

enter image description here

2 个答案:

答案 0 :(得分:0)

解决此问题的方法在Moment API中。使用这个:

 //https://stackoverflow.com/questions/51090597/botframework-on-teams-channel-11-authentication-aad-integrated
 string tenantIdAAD = "";
 try
 {
     tenantIdAAD = activity.GetChannelData<TeamsChannelData>().Tenant.Id;
 }
 catch (Exception exception)
 {
     tenantIdAAD = "";
 }

 ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));

 if ([AAD_TenantID].TenantIdAAD.Equals(tenantIdAAD) || activity.ServiceUrl.StartsWith("http://localhost") )
 {
     await Conversation.SendAsync(activity, () => new Dialogs.RootDialog().LogIfException());
 }
 else
 {
     await connector.Conversations.ReplyToActivityAsync(activity.CreateReply("Access Denied"));
 }

答案 1 :(得分:0)

查看了注释中提供的resp.text之后,我创建了以下parse方法,将您的响应解析为所需的方式。 传递给此方法的response是您在注释中提供的resp.text

import moment from 'moment'

const parseResponse = (response) => {
     const events = []
     response.forEach(obj => {
      obj.items.forEach(
        item => {
          events.push({
            start: moment(item.start.dateTime),
            end: moment(item.end.dateTime),
            title: item.summary
          })
        }
      )
    })
   return events
 }

注意:如果您想研究codesandbox.io/s/ywpznzrmv9的解决方法,请检查moment笔。如果resp.text仅具有一个对象数组,则可以摆脱第一个forEach块。|

like:

const parseResponse = (response) => {
     const events = []
     response[0].items.forEach(
        item => {
          events.push({
            start: moment(item.start.dateTime),
            end: moment(item.end.dateTime),
            title: item.summary
          })
        }
      )
   return events
 }

注意:如果您坚持使用JSON.parse(),则将map更改为forEach。 map创建一个对象,这是您不需要的垃圾。