Вставьте в Google Calendar API v3 ставит время на 1 час вперед - PullRequest
0 голосов
/ 30 апреля 2018

Я вставляю следующую дату в календарь Google: 2018-05-10T09:00:00.000Z. Это отлично работает, однако показывает дату в 10 утра вместо 9 утра.

Дата форматируется как UTC. Я попытался указать часовой пояс и даже трюк с Рейкьявиком.

let calendar = google.calendar('v3');
  let auth = generateOAuth(cal)
  let insert = {
    "end": {
      "dateTime": booking.endDate.toISOString(),
  "timeZone": 'Europe/London' //NOTE We use Atlantic/Reykjavik to allow us to set UTC times in GOOGLE CALENDAR. https://blog.gerv.net/2012/11/the-rekjavik-trick/
    },
    "start": {
      "dateTime": booking.date.toISOString(),
  "timeZone": 'Europe/London' //NOTE We use Atlantic/Reykjavik to allow us to set UTC times in GOOGLE CALENDAR. https://blog.gerv.net/2012/11/the-rekjavik-trick/
    },
    "description": booking.service.name,
    "summary": `${booking.booker.fname} ${booking.booker.lname}`,
    "extendedProperties": {
      "private": {
        "bookingId": booking.date._id
      }
    }
  }

enter image description here

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

@ DalmTo указал мне в правильном направлении. Чтобы решить эту проблему, мне пришлось воссоздать свой объект даты из UTC в правильный часовой пояс.

Я использовал часовой пояс момента , чтобы сделать это.

  let utcDate = moment.utc(booking.date).format('YYYY-MM-DD HH:mm')
  let timezone = business.regionality ? business.regionality.timezone : 'Europe/London'
  let reformattedDate = mtz.tz(utcDate, timezone).toISOString()
0 голосов
/ 30 апреля 2018

Сделав cleandar.get на каледаре, который вы вставляете в вас, вы увидите что-то вроде этого

{
 "kind": "calendar#calendar",
 "etag": "\"mHn5bZBLmCgV5zrOjYDUo0wE/WK1K2C9CsAxePbI13h8-KuIOLek\"",
 "id": "xxxx@gmail.com",
 "summary": "xxxxx@gmail.com",
 "timeZone": "Europe/Copenhagen",
 "conferenceProperties": {
  "allowedConferenceSolutionTypes": [
   "eventHangout"
  ]
 }
}

Обратите внимание на часовой пояс в самом календаре. Если вы вставляете событие в часовой пояс, который отличается от часового пояса календаря, то при просмотре события время будет скорректировано с учетом календарного.

...