具有/非DST时区的DDay iCal

时间:2011-06-27 19:55:00

标签: icalendar dday

我已经发布了DDay iCal库的论坛,但是想在这里发布它以防任何用户遇到这种情况。来自我的论坛帖子:

我遇到过如何在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;
}

1 个答案:

答案 0 :(得分:1)

我从SVN下载了最新的源代码,并且已经应用​​了此修复程序;截至2011年6月30日,它不在最新版本的DLL中。