由于某些原因,我从2010年收到的事件在这个API调用中返回:
https://www.googleapis.com/calendar/v3/calendars/myEmailHere@gmail.com/events?maxResults=15&key={KEY HERE}
以下是响应中的一些JSON(项目数组内部(:
{
"kind":"calendar#event",
"etag":""SaH0JPgxpZtQtKmztOIhZtDaAls/MA"",
"id":"_64oj8e9m8d1kab9p8cs48b9k68sj8ba284q48b9k64o4cd1p6crj6cq370",
"status":"confirmed",
"htmlLink":"LINK HERE",
"created":"2010-07-29T15:10:49.000Z",
"updated":"1970-01-01T00:00:00.000Z",
"summary":"Blood Drive",
"creator":{
"email":"myEmailHere@gmail.com",
"displayName":"Elite Gamer",
"self":true
},
"organizer":{
"email":"myEmailHere@gmail.com",
"displayName":"Elite Gamer",
"self":true
},
"start":{
"dateTime":"2010-08-23T14:00:00-05:00"
},
"end":{
"dateTime":"2010-08-23T19:00:00-05:00"
},
"iCalUID":"11496CCE-9C8D-4294-BA4D-410F493733C8",
"sequence":4
}
到现在为止(2014年(,我一直都是晚上。API也表明它在20世纪进行了更新???。
我是不是搞砸了什么?有没有我遗漏的参数?我对谷歌的期望远不止于此。
还有一件事我觉得很奇怪。谷歌日历还返回两个不同的日期?!日期时间和日期。(取决于全天事件(。这应该发生吗?这使得开发人员必须检查响应中发送了哪一个,然后根据它解析日期。要么是这样,要么我的请求中缺少一个参数。
更新
环顾四周,我发现了这个:
http://www.google.com/calendar/feeds/myEmail@gmail.com/public/full?alt=json&max-results=15
这可以得到确切的信息,但格式不同。然而,这确实返回了正确的日期;但由于某些原因,日期的格式仍然不同。为什么会这样?我应该用哪一个?
出于某种原因,我正在获取2010年的事件,这些事件将在这个API调用中返回:
https://www.googleapis.com/calendar/v3/calendars/myEmailHere@gmail.com/events?>maxResults=15&key={key HERE}
在URL中使用timeMin参数查询。默认情况下,您不按日期进行筛选,所以您只会得到所有结果。筛选maxResults只是限制返回的事件数量。
https://www.googleapis.com/calendar/v3/calendars/myEmailHere@gmail.com/events?maxResults=15&timeMin=2014-01-01T01:01:01.000Z&key={key HERE}
到现在为止(2014年(,我一直都是晚上。API也表明它在20世纪进行了更新???。
有问题,因为该事件从未更新过。API中没有记载:https://developers.google.com/google-apps/calendar/v3/reference/events/list
还有一件事我觉得很奇怪。谷歌日历还返回两个不同的>日期?!日期时间和日期。(取决于全天事件(。这应该发生吗?>这使得开发人员必须检查响应中发送了哪一个,然后根据它解析>日期。要么是这样,要么我的请求中缺少一个参数。
是的,这是根据文件应该发生的。https://developers.google.com/google-apps/calendar/v3/reference/events#resource
如果这是一个全天事件,则日期的格式为"yyyy-mm-dd"。
时间,作为组合的日期-时间值(根据RFC 3339格式化(。除非在时区中明确指定时区,否则需要时区>偏移量。
就我自己而言,我一直在努力让一切顺利进行,所以我希望这能帮助你。
至于反序列化。我使用Newtonsoft.JSON在.NET中反序列化约会。首先创建一个根对象,因为您正在序列化事件列表。
public class RootObject
{
public RootObject() {}
//parameters you want to retrieve from the Calendar.
public List<GoogleEvent> events {get;set;}
}
public class GoogleEvent
{
public GoogleEvent(){}
[JsonProperty("calendarId")] //specify which JSON parameter needs to be mapped
public string Id {get;set;}
//all parameters you need
}
然后使用NewtonSoft反序列化程序获取RootObject,该RootObject包含您检索到的Json中的所有事件。
NewtonSoft.Json.JsonConvert.DeserializeObject<RootObject>(JSONSTRING);
updated
在created
之前,这很奇怪。我以前没注意到。它至少应该和created
一样,但它显示的是1970-01-01T00:00:00.000Z
。这必须是一个unix时间,即0。谷歌做错了什么。但您的日历活动是在2010年创建的。您可以添加新的事件,看看它是否正确。
所有日期都是根据RFC 3339格式化的。您可以使用库来解析它们。