c# - 使用 microsoft graph api 创建全天事件时,总是缺少最后一天
问题描述
我正在使用以下代码创建一个 microsoft graph 事件对象:
Event @event = new Event
{
Subject = subject,
Body = new ItemBody
{
ContentType = BodyType.Html,
Content = $"<div id=\"BookingId\">{ id }</div><div id=\"CheckSum\">{ checkSum }</div>"
},
Start = new DateTimeTimeZone
{
DateTime = begin.ToString("yyyy-MM-ddTHH:mm:ss", new CultureInfo("de-AT")),
TimeZone = TimeZoneInfo.Local.Id
},
End = new DateTimeTimeZone
{
DateTime = end.ToString("yyyy-MM-ddTHH:mm:ss", new CultureInfo("de-AT")),
TimeZone = TimeZoneInfo.Local.Id
},
Location = new Location
{
DisplayName = location
},
Attendees = new List<Attendee>(),
IsAllDay = true
};
当此代码在我的机器上运行时,TimeZone 设置为“W. Europe Standard Time”。事件将像这样添加:
await graphClient.Groups[group.Id].Events
.Request()
.AddAsync(@event);
到目前为止,这很有效,但是我所有的事件都比我最初为结束时间设置的时间少了一天。还试图增加几个小时,但后来我得到一个例外,说 allDayEvents 必须在午夜开始和结束。但是将它们设置为午夜会删除事件的最后一天。
最简单的解决方法似乎总是在结束日期上增加一天。但是,如果这只是一个夏令时问题,然后我会在冬天得到一天的时间呢?我没有发现将夏令时添加到开始和结束日期的任何可能性。
附加信息:我在上面的代码中使用的日期时间对象已经将“00:00:00”作为时间。这也可以从上面的文字中看出,因为使用不同的时间会出现异常。因此,链接问题的答案并没有解决我的问题。所以,没有必要否决我的问题。
解决方案
创建“全天”事件时,开始和结束时间应该只指定日期,而不是日期和时间(或更准确地说,时间应该是00:00:00
):
Start = new DateTimeTimeZone
{
DateTime = begin..ToString("yyyy-MM-ddT00:00:00"),
TimeZone = TimeZoneInfo.Local.Id
},
End = new DateTimeTimeZone
{
DateTime = end.ToString("yyyy-MM-ddT00:00:00"),
TimeZone = TimeZoneInfo.Local.Id
},
非常类似于这个问题:创建全天事件失败
推荐阅读
- php - 为 Codeception 启用 CURL
- matlab - MATLAB:如何解调 STREAMING 音频文件而不是保存的音频文件?
- python - 创建一个循环,为每行输出一个额外的空间
- arrays - Angular 6:通过httpClient从相应的JSON中获取对象数组
- r - 汇总值直到日期更改
- regex - 如何融合以忽略数据类型差异?
- android - MPAndroidChart 定义 x 轴上的值之间的精确/固定间隔(时间)
- python - 比较字典值的子串
- node.js - ESM 导入不适用于 redux、Node 10.1.0
- python - 使用触摸传感器在两个音频文件之间切换