23

所以我一直在使用调用 Google API 的 REST 方法。我需要将事件插入到我拥有其 ID 的特定日历中。这是我发送的 POST 请求:

地址: https ://www.googleapis.com/calendar/v3/calendars/ {calendarID}/events

身体:

Authorization:  Bearer {access_token}
{
 "end": {
  "dateTime": "2012-08-30T12:30:00",
  "timeZone": "America/Chicago"
 },
 "start": {
  "dateTime": "2012-08-30T14:00:00",
  "timeZone": "America/Chicago"
 },
 "summary": "E E 306",
 "colorId": "9"
 "kind": "calendar#event"
}

这是我不断得到的回应:

{
 "error":{
  "errors":[
   {
    "domain":"calendar",
    "reason":"timeRangeEmpty",
    "message":"The specified time range is empty.",
    "locationType":"parameter",
    "location":"timeMax"
   }
  ],
  "code":400,
  "message":"The specified time range is empty."
 }
}

我不明白我可能做错了什么。我已经输入了所有必要的数据,它要求我提供一个事件甚至不存在的参数。我也找不到关于这个特定问题的任何文档。有人看到我缺少的东西吗?

4

5 回答 5

62

在问这个问题的过程中,我的脸被拍得很厉害,我想我已经给自己造成了脑损伤。事实证明,我找不到有关此问题的任何文档的原因是因为它非常愚蠢。

它给我这样一个有趣的错误的原因是因为在我正在测试的复制粘贴中,我翻转了开始和结束时间。所以,我告诉谷歌日历输入一个在它开始之前就结束的事件,这通常不会很好地结束。

长话短说,如果您在尝试插入事件时遇到涉及“timeMax”参数的错误,请检查您的开始和结束时间。

于 2012-06-05T04:08:19.900 回答
1

dateTimes 必须在 RFC3339 上,如下所述:

https://developers.google.com/google-apps/calendar/v3/reference/events

于 2014-01-05T05:46:53.107 回答
1
{
 "end": {
  "dateTime": "2014-04-01T10:00:00-06:00"
 },
 "start": {
  "dateTime": "2014-04-02T10:00:00-06:00"
 }
于 2014-04-01T17:52:41.667 回答
1

比较开始和结束日期时间,开始总是小于结束。还将 dateTime 格式更改为“2018-03-07T18:00:00+05:30”。

在IOS中,我使用

此日期时间格式的代码:

let dateTimeFormatter = DateFormatter()
dateTimeFormatter = Locale(identifier: "en_US_POSIX")
dateTimeFormatter = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
dateTimeFormatter = TimeZone(secondsFromGMT: 0)
let dateTimeString = dateTimeFormatter.string(from: YOUR_DATE_TIME)

此日期格式代码:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let dateString = dateFormatter.string(from: YOUR_DATE)

一个键和它的值就足够了,剩下的两个键不需要,即你有'dateTime'键值,那么就不需要'date'和'timeZone'键。如果你想设置 'timeZone' 它是可选的,但只有一个来自 'date' 和 'dateTime' 就足够了。

于 2018-03-07T05:03:14.197 回答
0

通常在开始 > 结束时会遇到此问题

示例:您正在指定开始和结束日期,如下所示:

开始:2020-10-10T13:30:00+5:30(即 2020 年 10 月 10 日 @1:30PM) 结束:2020-10-10T13:00:00+5:30(即 2020 年 10 月 10 日 @1:00PM)

结束时间应大于开始时间。

{
"summary": "some summary",
"description": "some description",
"location": "some location",
"end":  {"dateTime" : "2020-10-10T13:30:00+5:30"},
"start" : { "dateTime" : "2020-10-10T13:00:00+5:30"},
}
于 2020-09-29T20:59:12.153 回答