2016-08-25 3 views
2

Привет Я проникаю от DDay.ical к Ical.Net NuGet pacakages но я застревают в следующем коде, которые добавляют в календаре часовой пояс DDay.Ical пожалуйста, помогитеПереход от DDay.Ical.Net к Ical.Net

Предыдущий код:

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

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

+0

Он будет работать подобно тому, как мой предыдущий код не отлаживать это еще нужно сделать некоторые изменения, но это будет делать то же самое, что и предыдущий код, написанный кем-то другим. Я просто переношу его. Я мало знаю, но то, что я получаю, занимает часовой пояс пользователя и тем самым получает системный часовой пояс. – Tanmay

+1

Да, эти линии занимают часовой пояс пользователя , и пытается найти соответствующий часовой пояс Windows. ical.net поддерживает более широкий диапазон часовых поясов, поэтому, если человек не предоставил строку типа «не настоящий часовой пояс», вы должны быть в порядке. И даже в этом случае он вернется к часовому поясу системы, поэтому пользователь может получить неожиданные результаты, но он не будет взорваться во время выполнения. – rianjs

Смежные вопросы