所以我一直在使用REST方法调用Google的API。我需要将事件插入到我拥有ID的特定日历中。这是我发送的POST请求:
地址: https://www.googleapis.com/calendar/v3/calendars/ {calendarID} /事件
体:
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."
}
}
我不明白我可能做错了什么。我输入了所有必要的数据,它要求我提供一个事件甚至不存在的参数。我也找不到关于这个特殊问题的任何文件。有没有人看到我失踪的东西?
答案 0 :(得分:44)
在提出这个问题的过程中,我脸上很难受,我认为自己已经完成了脑损伤。事实证明,我无法找到关于这个问题的任何文件的原因是因为它有多么愚蠢。
它给我这么有趣的错误的原因是因为在我正在进行的复制粘贴测试中,我翻转了开始和结束时间。所以,我告诉Google Calendars进入一个在它开始之前结束的事件,这通常不会太好结束。
长话短说,如果您在尝试插入活动时引用“timeMax”参数时出错,请检查您的开始和结束时间。
答案 1 :(得分:1)
dateTimes必须在RFC3339上,如下所述:
https://developers.google.com/google-apps/calendar/v3/reference/events
答案 2 :(得分:1)
{
"end": {
"dateTime": "2014-04-01T10:00:00-06:00"
},
"start": {
"dateTime": "2014-04-02T10:00:00-06:00"
}
答案 3 :(得分:1)
比较开始和结束日期时间,开始时间始终小于结束时间。同时将dateTime格式更改为“2018-03-07T18:00:00 + 05:30”。
在IOS中,我使用
dateTime格式的代码:
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'就足够了。
答案 4 :(得分:0)
开始>结束
时,通常会遇到此问题示例:您指定的开始日期和结束日期如下:
开始:2020-10-10T13:30:00 + 5:30(即2020年10月10日下午1:30) 结束:2020-10-10T13:00:00 + 5:30(即2020年10月10日@ 1:00PM)
结束时间应大于开始时间。
State
CA 0.000000
NJ 0.000000
NY 1.000000
WA 0.214286
Name: amount, dtype: float64