Миграция с DDay.Ical.Net на Ical.Net
Привет! Я перехожу с DDay.ical на нативные пакеты Ical.Net, но я застрял в следующем коде, который добавляет часовой пояс в 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);
Здесь я знаю этот календарь.AddTimezone будет принимать ITimezone, но как его передать, я не получаю, пожалуйста, помогите.
1 ответ
VTimeZone
это конкретная реализация ITimeZone
интерфейс. Пример 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