google-api-ruby-client неправильно устанавливает время начала и окончания события

Я использую google-api-ruby-client для обновления события. Когда я указываю начальную и конечную дату и время с часовым поясом «ЕВРОПА/ЛОНДОН», событие успешно сохраняется, но возвращает событие, время начала и окончания которого находится в часовом поясе Тихого океана со смещением -0700 вместо +0000, поэтому неподходящее время для мероприятия. Вы можете увидеть часть ответа ниже, показывающую неправильное смещение времени:

 Success - #<Google::Apis::CalendarV3::Event:0x005638691b3dc8

 @end=
   #<Google::Apis::CalendarV3::EventDateTime:0x00563869199ec8
   @date_time=Mon, 23 Apr 2018 04:45:00 -0700,
   @time_zone="Europe/London">,
 @start=
  #<Google::Apis::CalendarV3::EventDateTime:0x00563869177e90
  @date_time=Mon, 23 Apr 2018 03:45:00 -0700,
  @time_zone="Europe/London">
 >

Это метод, выполняющий вызов API:

def service 
  secrets = setup_credentials
  service = Google::Apis::CalendarV3::CalendarService.new
  service.client_options.application_name = 'Quickstart'
  service.authorization = secrets.to_authorization

  event_id = "yyyzzzzzzxxxxx"
  date_string = "2018-4-23 10:45AM"
  date = DateTime.parse(date_string)
  end_date = (date + 1.hour)

  event = {
    summary: "hype event",
    start: {date_time: date, time_zone: "Europe/London"},
    end: {date_time: end_date, time_zone: "Europe/London"}
  }
  service.update_event('primary', event_id, event, send_notifications: true) 
end

Кто-нибудь знает, как заставить API Google использовать указанный мной часовой пояс.


person brg    schedule 12.01.2018    source источник


Ответы (1)


Я передавал объект даты и времени, например Mon, 23 Apr 2018 10:45:00 +0000, содержащий часовой пояс. То есть смещение +0000 указывает часовой пояс. Это означало, что Google Api игнорировал пользовательское значение часового пояса, которое я передал API. Вот специальное значение часового пояса во избежание сомнений: time_zone="Europe/London". Чтобы Google использовал собственный часовой пояс, выполните следующие действия.

Удалите часовой пояс/смещение из объекта datetime и, кроме того, измените формат на этот "2018-04-23T10:45:00", вызвав start_date.strftime('%FT%T '), где start_date — это переменная, содержащая объект даты и времени, например Пн, 23 апреля 2018 г., 10:45:00 +0000.

person brg    schedule 13.01.2018