我正在使用google日历编程界面:
https://developers.google.com/google-apps/calendar/v3/reference/events/insert试一试
当我执行以下请求时,我得到以下响应:
请求: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"
}
反应:
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
}
}
我认为DateTime条目末尾的0.01 z会指定+01时区(欧洲中部时间),但似乎相反谷歌服务器只是忽略它,并将其转换为格林尼治时间(一小时)差异),而不向小时添加1,显示事件比规定时间晚了一小时。特别注意:
请求:{
"end": {
"dateTime": "2013-04-07T20:30:00.01Z"
},
"start": {
"dateTime": "2013-04-07T19:30:00.01Z"
},
反应:
"start": {
"dateTime": "2013-04-07T19:30:00Z"
},
"end": {
"dateTime": "2013-04-07T20:30:00Z"
},
Google刚刚把0.01 z变成了0.00z,没有改变19:30到20:3020:30到21:30。这上面是什么?我的语法写错了吗?如果是,那又是怎样的呢?
谢谢。
API接受'timeZone'参数。您可能想要尝试传递一个时区值,如'GMT+1:00'或'UTC+1:00'。
我们的团队以前也遇到过类似的问题,我们只是摆弄了一下数值来解决问题。
2013-04-07T20:30:00.01Z
中的.01Z
部分是而不是时区偏移量。01
定义了毫秒数(在本例中为10毫秒)。字符Z
定义了实际的时区(UTC,在本例中也称为祖鲁)。
如果您想将时区偏移量定义为+01,那么使用的格式肯定是+01:00
。因此,您的示例将改为2013-04-07T20:30:00+01:00
。
:
UTC偏移量以与'Z'相同的方式附加到时间后面以上,±(hh):(毫米),±(hh)(毫米),或±(hh)。
private String getFormatedDate(Date date)
{
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss+05:30");
df.setTimeZone(TimeZone.getTimeZone("GMT+05:30"));
return df.format(date);
}