2011-06-27 51 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中。