所以我正在通过python制作一个小型应用程序引擎应用程序,它从文件中读取时间表并将其放入您的Google日历中。时间表中的所有时间/日期都独立于夏令时,所以我需要以相同的方式安排活动。由于所有事件都在多个夏令时周期内每周重复发生,这一事实使情况变得复杂。
我正在使用Calender API V3。
我首先为此创建了自己的日历。
calander = {
'summary': 'Calender Name,
'location': 'Somewhere in Ireland',
'timeZone': 'GMT',
}
然后我用许多不同的重复事件填充它
event = {
'summary': 'CS101',
'description': 'Intro to Comp Sci',
'location': 'Bla bla bla',
'start': {
'dateTime': '2012-10-03T10:00:00.000-00:00',
'timeZone': 'GMT'
},
'end': {
'dateTime': '2012-10-03T11:00:00.000-00:00',
'timeZone': 'GMT'
},
'recurrence': [
'RRULE:FREQ=WEEKLY;UNTIL=20121231',
],
}
当然,在我的实际程序中,所有这些字符串都是动态生成的,但我在这里没有问题。
问题是,夏季夏令时期间发生的任何事件都会自动比我给出的时间晚1小时。我确信这是一个错误,因为我将事件和日历的时区设置为GMT,但GMT不节省夏令时。不应该对我输入的时间做任何事情。
例如,时间表上说,活动从9月1日到12月31日,每周一上午10点到11点。如果将这些信息输入日历,10月28日(欧洲延期日期)之前的所有活动都将比时间表晚一小时。夏季以外的所有时间都很好。
如果我告诉日历事件在上午10点开始,我不希望它调整为夏令时。如何避免这种情况?
是否在start.dateTime和end.dateTime中也定义了时区?如果这样做的话,时区字段似乎没有被完全识别。尝试将您的日期从"2012-09-26T10:00:00.000-00:00"更改为"2012-09-26 T10:00:0.000"[API->start.dateTime]
由于GMT没有夏令时,如果您将日历事件设置为您指定的事件,从格林尼治标准时间10:00开始,当您在本地时间设置为"欧洲/都柏林"的情况下查看日历视图时,这些事件将在11:00开始,因为夏令时为+1。
我不知道你说的"独立于"时区是什么意思,但是:
1) 如果你想要一个从爱尔兰时间每周10:00开始直到12月的重复活动(如你墙上的时钟所示),试试这个:
{
"start": {
"dateTime": "2012-09-26T10:00:00.000",
"timeZone": "Europe/Dublin"
},
"end": {
"dateTime": "2012-09-26T11:00:00.000",
"timeZone": "Europe/Dublin"
},
"summary": "CS101 Dublin",
"description": "Intro to Comp Sci",
"location": "Bla bla bla",
"recurrence": [
"RRULE:FREQ=WEEKLY;UNTIL=20121131"
]
}
2) 如果你真的想让活动从格林尼治标准时间每周10:00开始,直到12月(如爱尔兰总是设置为冬季的时钟所示),试试这个:
{
"start": {
"dateTime": "2012-09-26T10:00:00.000",
"timeZone": "GMT"
},
"end": {
"dateTime": "2012-09-26T11:00:00.000",
"timeZone": "GMT"
},
"summary": "CS101 GMT",
"description": "Intro to Comp Sci",
"location": "Bla bla bla",
"recurrence": [
"RRULE:FREQ=WEEKLY;UNTIL=20121131"
]
}
这将创建一个事件,当在时区设置为"欧洲/都柏林"的日历UI中显示时,该事件将在11:00开始,直到2012-10-31,届时将在10:00开始。您可以尝试在花按钮->设置->您的时区上的日历UI中切换不同的时区显示。
但我的猜测是,你想要(1)在这里,因为这听起来像是一个CS课程,将以当地时间指定的时间开始。
顺便说一下,当尝试时,如果发现API资源管理器非常方便:https://developers.google.com/apis-explorer/#s/calendar/v3/
GMT对于夏令时来说是不明智的。你应该使用当地时间(在爱尔兰-IST的情况下)。解释不同的国家有不同的夏令时开始和结束日期。