我正在尝试使用Outlook 365 API创建为期一天的全天活动。为此,我以UTC格式指定开始和结束时间,然后按照documentation所述指示StartTimeZone和EndTimeZone:
{
Start: '2015-07-14T23:00:00.000Z',
End: '2015-07-15T23:00:00.000Z',
StartTimeZone: 'W. Central Africa Standard Time',
EndTimeZone: 'W. Central Africa Standard Time',
ShowAs: 'Free',
IsAllDay: true,
Body: {
ContentType: 'HTML',
Content: '<a href="http://localhost:3000/todos/MDckAk8b2nxvv4hoE">To-do due date</a>'
},
Subject : 'test 74'
}
现在,这是我的问题:
使用字符串定义时区不方便且不一致。伦敦冬季使用GMT,夏季使用GMT + 1。结果我必须使用'W.中非标准时间'在夏季,我的请求被API接受,这令人困惑。仅使用此格式定义时间,不提及时区:2015-07-14T00:00:00 +/- XX:00描述午夜,7月14日开始时区为格林威治标准时间+/- XX :00对我来说是明确的,也是理想的,但这个日期格式被API拒绝,选项IsAllDay:true,声明全天事件应该在午夜开始和结束(如果没有给出StartTimeZone和EndTimeZone)。 / p>
某些时区根本无法使用doc中给出的GMT偏移量,即使时间和区域对应也是如此。这些区域根本不适用于他们的GMT偏移:阿拉斯加标准时间,太平洋标准时间,大西洋中部标准时间。这是一个失败的查询示例('大西洋中部标准时间',GMT偏移为-2):
{ 开始:'2015-07-15T02:00:00.000Z', 结束:'2015-07-16T02:00:00.000Z', StartTimeZone:'大西洋中部标准时间', EndTimeZone:'大西洋中部标准时间', ShowAs:'免费', IsAllDay:是的, 身体: { ContentType:'HTML', 内容:'To-do due date' }, 主题:'测试75' } 它的GMT偏移为-1(开始:'2015-07-15T01:00:00.000')。我如何为GMT-2中的用户做什么?
相同的GMT偏移量可以通过doc中的几个字符串来描述。例如,“山地标准时间”和“美国山地标准时间”都描述了GMT-07:00,但只有我在“美国山地标准时间”的查询工作。一些时间偏移可以有多达5个不同的字符串! (比如GMT + 01:00)选择哪一个?
目前,我正在选择一个基于GMT偏移的TimeZone字符串(如果存在!)。如果我在伦敦当前设置我的时钟,我将使用'W.中非标准时间'用于StartTimeZone和EndTimeZone。
有没有办法不使用这些字符串?或者有人可以解释我如何正确选择它们?我在日期翻译中完全迷失了! :)
答案 0 :(得分:0)
该活动将在何处使用?使用当地时区。
答案 1 :(得分:0)
确保全天活动正确无需知道用户的时区。不幸的是,如果您在随机时区创建它,并且用户邮件客户端(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"
}