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 использовать указанную мной временную зону.
1 ответ
Я передавал объект даты и времени, например, понедельник, 23 апреля 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 - это переменная, содержащая объект datetime как в понедельник, 23 апреля 2018 10:45:00 +0000.