从DDay.Ical.Net迁移到Ical.Net

时间:2016-08-25 13:47:01

标签: c# .net icalendar dday ical-dotnet

您好我正在从DDay.ical迁移到Ical.Net nuget pacakages但我陷入以下代码,在DDay中添加Timezone.Ical日历请帮忙

上一个代码:

List<DOAppointment> lst = objResponse.Appointments;
string timeZoneName = objResponse.UserTimezone; 
iCalendar calendar = new DDay.iCal.iCalendar();
var timeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName); 
calendar.AddTimeZone(iCalTimeZone.FromSystemTimeZone(timeZone));

迁移到Ical.Net:

  List<DOAppointment> lst = objResponse.Appointments;
  string timeZoneName = objResponse.UserTimezone;
  Ical.Net.Calendar calendar = new Ical.Net.Calendar();
  var  timeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName); 
  ITimeZone tzID = timeZone;
  calendar.AddTimeZone(tzID);

在这里,我知道calendar.AddTimezone将采用ITimezone但如何通过它我没有得到请求帮助。

1 个答案:

答案 0 :(得分:1)

VTimeZoneITimeZone接口的具体实现。 ical.net示例如下所示:

var calendar = new Ical.Net.Calendar();

// ical.net supports BCL time zones as well as IANA time zones
calendar.AddTimeZone(new VTimeZone(objResponse.UserTimezone));

将来,如果时区字符串与已知的任何内容不匹配,我可能会更改VTimeZone构造函数以引发异常。但是现在,它非常愚蠢。在幕后,如果所有其他方法都失败,ical.net将默认为运行代码的系统时区。这可能不太好。

我还添加了一个维基页面,其中包含您的问题:

https://github.com/rianjs/ical.net/wiki/Working-with-time-zones