我可以在此引用后检索谷歌日历活动列表:https://developers.google.com/calendar/v3/reference/events/list
如何根据日历的时区获取2017-03-30T14:30:00
和2017-03-30T15:30:00
之间所有活动的列表?
有可选参数timeMin
,timeMax
。问题是它们应该具有以下格式之一(RFC3339时间戳):
2017-03-30T14:30:00Z
,此处Z
代表Zulu = UTC timeZone 2017-03-30T14:30:00+03
,此处+03
代表与UTC 在这两种情况下,我都必须获取日历的时区(如何以偏移方式获取格式,例如-04
,+00
,+03
?)然后执行一些额外的计算/操作。
显然在我的情况下,我更愿意传递值而不提及timeZone并让API使用日历的时区。
还有另一个可选参数timeZone
,但这是将在响应中使用的timeZone,而不是在过滤器中。默认为日历的时区,这对我有好处。
答案 0 :(得分:0)
您不必使用'q'
属性。相反,请使用timeMin
和timeMax
,其中timeMin是较早的日期。 try-it格式如下所示:
答案 1 :(得分:0)
最后,我找到了在日期时间应用GC(Google日历)TZ的方法:
from dateutil import tz
from datetime import datetime
tzinfo = tz.gettz(default_calendar['timeZone'])
# Option1: create date without TZ and then apply GC TZ using astimezone:
dt = datetime(2018,7,3,14,30,0)
dt_in_gc_tz = dt.astimezone(tzinfo) # 2018-07-03 14:30:00+03:00
# Option2: just create dateTime with GC TZ:
dt_in_gc_tz = datetime(2018, 7,3,14,30,0, tzinfo=tzinfo) # 2018-07-03 14:30:00+03:00
# Convert to RFC3339 timestamp string:
dt_in_gc_tz.isoformat() # '2018-07-03T14:30:00+03:00'
答案 2 :(得分:0)
const moment = require('moment-timezone');
const timeMin = moment(start_time).toISOString();
const timeMax = moment(end_time).toISOString();
oauth2Client.setCredentials({ refresh_token });
const token = await oauth2Client.getAccessToken();
const response = await axios.get(
`https://www.googleapis.com/calendar/v3/calendars/${email}/events?key=${config.get('service:google:api_key')}&timeMin=${timeMin}&timeMax=${timeMax}`, {
headers: {
'Authorization': `Bearer ${token.res.data.access_token}`
}
});