2011-06-27 53 views
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; 
} 

回答

1

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