2

嗨,我正在从 DDay.ical 迁移到 Ical.Net nuget pacakages,但我陷入了以下代码,它在 DDay.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 但如何通过它我没有得到帮助。

4

1 回答 1

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 将默认为运行代码的系统时区,如果一切都失败了。那可能不太好。

我还添加了一个修改了您的问题的 wiki 页面:

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

于 2016-08-25T14:19:50.393 回答