【问题标题】:Migrating from DDay.Ical.Net to Ical.Net从 DDay.Ical.Net 迁移到 Ical.Net
【发布时间】:2017-01-01 23:49:52
【问题描述】:

您好,我正在从 DDay.ical 迁移到 Ical.Net nuget 包,但我遇到了以下代码,该代码在 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 但如何通过它我没有得到请帮助。

【问题讨论】:

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


    【解决方案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

    【讨论】:

    • 它会像我以前的代码一样工作吗?还没有调试它还需要做一些更改,但它会做与以前的代码由其他人编写的相同的权利 n 我只是在迁移它我不太了解,但我得到的是获取用户的时区并获得系统时区
    • 是的,这些行正在占用用户的时区,并试图找到相应的 Windows 时区。 ical.net 支持更广泛的时区,因此除非该人提供了诸如“不是实时时区”之类的字符串,否则您应该没问题。即使在这种情况下,它也会回退到系统运行的时区,因此用户可能会得到意想不到的结果,但它不会在运行时爆炸。
    猜你喜欢
    • 2017-03-17
    • 1970-01-01
    • 2012-12-04
    • 2011-04-26
    • 2015-07-23
    • 2020-05-31
    • 2010-10-26
    • 2022-01-14
    • 2016-09-27
    相关资源
    最近更新 更多