在不同时区使用Outlook 365 API设置全天日历事件
我正在尝试使用Outlook 365 API创建一天、全天的活动。为此,我以UTC格式指定开始和结束时间,然后指示StartTimeZone和EndTimeZone,如下所述:在不同时区使用Outlook 365 API设置全天日历事件,outlook,office365,outlook-restapi,Outlook,Office365,Outlook Restapi,我正在尝试使用Outlook 365 API创建一天、全天的活动。为此,我以UTC格式指定开始和结束时间,然后指示StartTimeZone和EndTimeZone,如下所述: { 开始:“2015-07-14T23:00:00.000Z”, 完:“2015-07-15T23:00:00.000Z”, StartTimeZone:“中非西部标准时间”, 结束时区:“中非西部标准时间”, ShowAs:'免费', 是的, 正文:{ ContentType:'HTML', 内容:“” }, 主题:“
{
开始:“2015-07-14T23:00:00.000Z”,
完:“2015-07-15T23:00:00.000Z”,
StartTimeZone:“中非西部标准时间”,
结束时区:“中非西部标准时间”,
ShowAs:'免费',
是的,
正文:{
ContentType:'HTML',
内容:“”
},
主题:“测试74”
}
现在,我的问题是:
- 使用字符串定义时区既不方便又不一致。伦敦在冬季使用GMT,但在夏季使用GMT+1。因此,我必须在夏季使用“中非西部标准时间”让API接受我的请求,这令人困惑。仅使用此格式定义时间,不提及时区:2015-07-14T00:00:00+/-XX:00来描述午夜,7月14日的开始在时间为GMT+/-XX:00的区域对我来说是明确和理想的,但API拒绝使用此日期格式,选项为AllDay:true,说明全天活动应在午夜开始和结束(如果未给出StartTimeZone和EndTimeZone)
- 某些时区根本无法使用中给出的GMT偏移量,即使时间和时区对应。这些区域根本无法使用GMT偏移量:阿拉斯加标准时间、太平洋标准时间、大西洋中部标准时间。下面是一个失败的查询示例(“大西洋中部标准时间”,GMT偏移量为-2): { 开始:“2015-07-15T02:00:00.000Z”, 完:“2015-07-16T02:00:00.000Z”, StartTimeZone:“大西洋中部标准时间”, 结束时区:“大西洋中部标准时间”, ShowAs:'免费', 是的, 正文:{ ContentType:'HTML', 内容:“” }, 主题:“测试75” } 它的GMT偏移量为-1(开始时间:2015-07-15T01:00:00.000)。我如何在GMT-2中为我的用户服务
- 相同的GMT偏移量可以由文档中的多个字符串来描述。例如,“山区标准时间”和“美国山区标准时间”都描述GMT-07:00,但只有我对“美国山区标准时间”的查询有效。某些时间偏移最多可以有5个不同的字符串!(如GMT+01:00)选择哪一个
有没有办法不使用这些字符串?或者有人能告诉我如何正确选择它们吗?我完全沉浸在日期翻译中了!:) 该活动将在何处使用?使用该本地时区。正确处理全天事件确实需要知道用户的时区。不幸的是,如果您在一个随机时区中创建它,并且用户邮件客户端(Outlook、OWA等)使用另一个,那么该事件将显示多天(因为开始和结束从午夜开始移动) 因此,您在这里真正应该做的是设置用户时区中午夜的开始和结束时间:
{
"Start": "2015-07-17T00:00:00-04:00",
"End": "2015-07-18T00:00:00-04:00",
"StartTimeZone": "Eastern Standard Time",
"EndTimeZone": "Eastern Standard Time",
"IsAllDay": "true",
"ShowAs": "Free",
"Body": {
"ContentType": "Text",
"Content": "Test"
},
"Subject": "TZ AllDay Test"
}
嗨,Dmitry,我们正在使用应用程序中的RESTAPI,它可以在浏览器中工作。我们的应用程序可能会在世界任何地方使用,因此我们必须支持任何位置,或尽可能多的位置。如何从浏览器中获取与API兼容的本地时区?现在我正在调用javascript Date对象的getTimeZoneOffset方法,并在工作的对象中关联一个随机时区,但这很弱,因为将时区关联到偏移量的函数是满射的…我认为在javascript中无法做到这一点-Hi Dmitry,这是非常不幸的。所以,没有办法不使用那些令人困惑的字符串吗?嗨,杰森,谢谢你的回答。你所建议的正是我所做的,如果我没有弄错的话,你的时间格式只是不同,但它产生了完全相同的结果。我所做的是调用getTimeZoneOffset并选择一个与此偏移匹配的时区(因此,我没有选择随机时区),但这看起来并不太好。事实上,微软有一个令人困惑的文件,当他们写道伦敦生活在格林尼治标准时间,这只是一年中真实的一部分,现在它生活在西非标准时间,这是真实的,但有点愚蠢。。。
{
"Start": "2015-07-17T00:00:00-04:00",
"End": "2015-07-18T00:00:00-04:00",
"StartTimeZone": "Eastern Standard Time",
"EndTimeZone": "Eastern Standard Time",
"IsAllDay": "true",
"ShowAs": "Free",
"Body": {
"ContentType": "Text",
"Content": "Test"
},
"Subject": "TZ AllDay Test"
}