【问题标题】:Google Calendar API Bug - End date is - 1Google 日历 API 错误 - 结束日期是 - 1
【发布时间】:2020-05-09 02:11:55
【问题描述】:

Google 日历 API 将 end.date 视为 end.date - 1

我的 POST 负载

{
    'summary': 'THREE DAY EVENT',
    'status': 'confirmed',
    'start': {
        'date': '2020-01-27',
        'timeZone': 'America/Los_Angeles'
    },
    'end': {
        'date': '2020-01-29',
        'timeZone': 'America/Los_Angeles'
    }
}

这会在我的日历上产生以下事件

注意这3天全天的结束日期甚至是负1

当我对事件 id 执行 GET 时,我会返回一个正确的对象。

{
    'kind': 'calendar#event',
    'etag': '"REDACTED"',
    'id': 'REDACTED',
    'status': 'confirmed',
    'htmlLink': 'REDACTED',
    'created': '2020-01-22T20:15:23.000Z',
    'updated': '2020-01-22T20:15:23.896Z',
    'summary': 'THREE DAY EVENT',
    'creator': {'email': 'REDACTED'},
    'organizer': {'email': 'REDACTED',
    'displayName': 'REDACTED',
    'self': True},
    'start': {'date': '2020-01-27'},
    'end': {'date': '2020-01-29'},
    'iCalUID': 'REDACTED',
    'sequence': 0,
    'reminders': {'useDefault': True}
}

我看过这个帖子——Google Calendar API: Event endTime is decremented by 1 day

根据 Google 日历 API 文档:https://developers.google.com/calendar/v3/reference/events/insert#request-body

end.date -- The date, in the format "yyyy-mm-dd", if this is an all-day event.

对于all-day 事件,不需要时间字符串,结果事件应该在我提供的范围内。生成的 API 响应正确,但 Google 日历中的事件不正确...

【问题讨论】:

    标签: google-api google-calendar-api


    【解决方案1】:

    正如你在APIofficial documentation中看到的,参数end指的是事件的专有结束时间,而start指的是包含开始时间。

    也就是说,结束日期不包括在事件中,而是前一天。

    参考:

    希望对你有帮助。

    【讨论】:

    • 我仍然不明白这有什么意义。单日全天事件的开始日期和结束日期相同。按照这个逻辑,不存在开始和结束日期相同的事件吗?
    • @pyFiddler 无论如何,这就是 API 的设计方式。引用的来源对此非常清楚。如果您认为应该更改,您可以随时在 Google Issue Tracker 中创建功能请求。但这无论如何都不是错误。这是预期的行为。此外,由于您的问题已得到解答,请考虑接受此答案,因为 SO 依靠此答案与其他用户分享知识。
    • 虽然我不同意它应该是这样工作的。我会接受现实。谢谢你的解释。
    猜你喜欢
    • 1970-01-01
    • 2019-10-20
    • 2015-02-09
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多