1
我已发布到DDay iCal图书馆的论坛,但想过在这里发布它以防万一任何用户遇到这种情况。来自我的论坛帖子:DDay iCal w /非DST时区
我碰到过在iCal文件中如何生成时区部分的错误 - 添加不支持夏令时的时区创建一个空的VTIMEZONE部分,这打破了iCal。快速浏览一下代码可以让我相信该部分是由TimeZoneInfo.GetAdjustmentRules()返回的集合生成的,对于不观察DST的时区是空的。
帖子底部的代码应该证明这个问题。
如果这不是一个错误(我不相信它是!),我非常感谢指导,让这些工作。
void Main()
{
foreach (var tz in TimeZoneInfo.GetSystemTimeZones())
{
var cal = GetCal(tz);
Console.WriteLine(tz.Id + " :: " + tz.SupportsDaylightSavingTime + " :: " + cal.TimeZones.First().ID);
}
}
iCalendar GetCal(TimeZoneInfo timeZone)
{
var calendar = new iCalendar();
calendar.AddChild(iCalTimeZone.FromSystemTimeZone(timeZone));
var @event = new Event
{
Name = "VEVENT",
DTStart = new iCalDateTime(DateTime.Now, timeZone.Id),
DTEnd = new iCalDateTime(DateTime.Now + TimeSpan.FromHours(1))
};
calendar.Events.Add(@event);
return calendar;
}