1

我遇到了一个问题,即使日期正在按时刻解析,日期也被转换为今天的日期。看起来 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 这是一张图片,其中 JSON 上的 startDate 来自 Google 日历

这是脚本的转换和痕迹在此处输入图像描述

这是通话中的实时日期:

在此处输入图像描述

4

2 回答 2

0

在查看了您resp.text在评论中提供的内容后,我创建了以下解析方法来按照您想要的方式解析您的回复。这里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 块。|

喜欢:

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 创建一个对象,这是您在您的情况下不需要的垃圾。

于 2018-07-04T04:18:22.330 回答
0

解决此问题的问题在 Moment api 中。用这个 :

JSON.parse(resp.text).items.map((event) => {
      var start = moment(event.start.dateTime,'YYYY-MM-DD HH:mm').toDate();
      var end = moment(event.start.dateTime,'YYYY-MM-DD HH:mm').toDate();
      events.push({
        start: start,
        end:  end,
        title: event.summary,
      })
    });
于 2018-06-28T20:13:09.787 回答