API календаря Google ruby, часовой пояс даты и времени - PullRequest
1 голос
/ 12 марта 2019

У меня есть этот код.который создает событие в моем календаре Google.

    client = Signet::OAuth2::Client.new(client_options)
    client.update!(session[:authorization])

    service = Google::Apis::CalendarV3::CalendarService.new
    service.authorization = client

    event = Google::Apis::CalendarV3::Event.new({
        start: Google::Apis::CalendarV3::EventDateTime.new(
            date_time: cf_event.starts_at.to_datetime.rfc3339,
            time_zone: 'America/Monterrey'
        ),
        end: Google::Apis::CalendarV3::EventDateTime.new(
            date_time: cf_event.ends_at.to_datetime.rfc3339,
            time_zone: 'America/Monterrey'  
        ),

        summary: cf_event.title
    })

Это базовый пример, мой cf_event объект имеет атрибут starts_at, который является timeWithZone.

, поэтому мне пришлосьdo cf_event.starts_at.to_datetime.rfc3339.

Вывод "2019-03-15T17: 50: 00 + 00: 00"

Проблема в том, что код создает событие, но с -6 часами.

Если я захожу в гугл-календари, мое событие - это день 15 в (11 - 11:50), а не (17 - 17:50)

что я делаю неправильно?

1 Ответ

1 голос
/ 13 марта 2019

Вы вводите время как 17:50:00 в UTC+0 (+00:00 из вашего date_time означает UTC или UTC+0), однако вы указали time_zone, где вы использовали Монтеррей, которыйследует за часовым поясом UTC-6.

Я предполагаю, что ваш код занимает 17:50:00 в UTC+0, а затем преобразует его в часовой пояс Монтеррея UTC-6, что приводит к 11:50:00.Либо попробуйте удалить +00:00, либо попытайтесь сделать его -06:00.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...