Moment.js конвертирует дату в сегодняшнюю дату с помощью React Big Calendar - PullRequest
0 голосов
/ 27 июня 2018

У меня проблема с преобразованием даты в сегодняшнюю, даже если дата анализируется в данный момент. Похоже, Момент конвертирует дату в сегодняшнюю дату. Я считаю, что я просто неправильно использую скрипт. Я не знаком с Моментом. Любая помощь будет оценена.

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 голосов
/ 04 июля 2018

После просмотра вашего 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. Вы можете избавиться от первого блока forEach, если resp.text имеет только один массив объектов. |

нравится:

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. Карта создает объект, который является мусором, который вам не понадобится в вашем случае.

0 голосов
/ 28 июня 2018

Проблема, которая исправила это в 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,
      })
    });
...