Google Calendar API:谷歌服务器没有考虑TimeZone?

Jas*_*sit 6 rest timezone google-calendar-api

我正在玩谷歌日历程序界面:

https://developers.google.com/google-apps/calendar/v3/reference/events/insert#try-it

当我执行以下请求时,我得到以下响应:

请求:

POST https://www.googleapis.com/calendar/v3/calendars/o38t4tnqifv4kdanjkmegs2uqk%40group.calendar.google.com/events?key={YOUR_API_KEY}

Content-Type:  application/json
Authorization:  Bearer ya29.AHES6ZRv_qi4OhIhzN1C8YifUSO4mmXjufeKhaPmbyaRw3FVhXIgJQ
X-JavaScript-User-Agent:  Google APIs Explorer

{
"end": {
"dateTime": "2013-04-07T20:30:00.01Z"
},
"start": {
"dateTime": "2013-04-07T19:30:00.01Z"
},
"description": "Just testing, 2003.",
"extendedProperties": {
"private": {
"foo": "bar"
}
},
"summary": "Hello World 1"
}
Run Code Online (Sandbox Code Playgroud)

响应:

200 OK

- Show headers -
{
"kind": "calendar#event",
"etag": "\"78Bu1G8fWt0vPGZK2Ckfad3ZtNE/Z2NhbDAwMDAxMzY4NzE0MzM1NTc3MDAw\"",
"id": "e2pfv3men0e9r5mv4qp7hrsqs8",
"status": "confirmed",
"htmlLink": "https://www.google.com/calendar/event?eid=ZTJwZnYzbWVuMGU5cjVtdjRxcDdocnNxczggbzM4dDR0bnFpZnY0a2RhbmprbWVnczJ1cWtAZw",
"created": "2013-05-16T14:25:35.000Z",
"updated": "2013-05-16T14:25:35.577Z",
"summary": "Hello World 1",
"description": "Just testing, 2003.",
"creator": {
"email": "jdoe@gmail.com"
},
"organizer": {
"email": "o38t4tnqifv4kdanjkmegs2uqk@group.calendar.google.com",
"displayName": "ClientEventManager",
"self": true
},
"start": {
"dateTime": "2013-04-07T19:30:00Z"
},
"end": {
"dateTime": "2013-04-07T20:30:00Z"
},
"iCalUID": "e2pfv3men0e9r5mv4qp7hrsqs8@google.com",
"sequence": 0,
"extendedProperties": {
"private": {
"foo": "bar"
}
},
"reminders": {
"useDefault": true
}
}
Run Code Online (Sandbox Code Playgroud)

我认为DateTime条目末尾的.01Z会指定+01时区(欧洲中部时间),但似乎谷歌服务器只是忽略它并将其转换为GMT(一小时差异)而不添加1小时,显示事件发生在指定时间之外一小时.特别注意:

请求:

{
"end": {
"dateTime": "2013-04-07T20:30:00.01Z"
},
"start": {
"dateTime": "2013-04-07T19:30:00.01Z"
},
Run Code Online (Sandbox Code Playgroud)

响应:

"start": {
"dateTime": "2013-04-07T19:30:00Z"
},
"end": {
"dateTime": "2013-04-07T20:30:00Z"
},
Run Code Online (Sandbox Code Playgroud)

谷歌刚刚在19:30到20:30和20:30到21:30之间将.01Z转换为.00Z.什么在这里?我的语法错了吗?如果是这样呢?

谢谢.

iam*_*vin 0

该 API 接受“timeZone”参数。您可能想尝试传递“GMT+1:00”或“UTC+1:00”等时区值。

我们的团队之前也遇到过类似的问题,我们只是利用价值观来把事情做好。

  • 您是否尝试过删除 .01Z 或 .00Z?已经有一段时间了,但如果我没记错的话,Z 表示祖鲁时间或通常所说的 GMT。这可能就是您仍然收到 GMT 结果的原因。 (2认同)