1

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;
}
4

1 に答える 1

1

SVN から最新のソースを取得しましたが、これに対する修正は既に適用されています。2011 年 6 月 30 日現在、最新リリースの DLL には含まれていません。

于 2011-06-30T18:23:26.487 に答える