Я работаю над сайтом, который публикует события в течение года.Мы предлагаем загрузку .ICS, чтобы посетители могли добавлять события в свои календари.
Недавно мы обнаружили, что посетители сообщают о том, что время выключения (плюс или минус один час в зависимости от их местоположения) для событий, которые происходят после11 марта. По сути, это «истинное» время, когда событие произойдет с учетом временного сдвига, но проблема в том, что событие было запланировано на определенное время, которое не следует корректировать.
Какодин обойти эту проблему?Все мои попытки компенсировать это путем прибавления или вычитания часа привели к тому, что он сломался либо для восточного, либо для западного побережья.
Возможный связанный с этим вопрос здесь: https://stackoverflow.com/questions/9484447/scheduling-events-and-daylight-savings-time
ОБНОВЛЕНИЕ: вот кодЯ использую:
// Create calendar and add the desired timezone
DDay.iCal.iCalendar iCal = new DDay.iCal.iCalendar();
var targetTimeZone = TimeZoneInfo.FindSystemTimeZoneById(tzid);
iCal.AddTimeZone(targetTimeZone);
// Create the event and add it to the calendar
DDay.iCal.Event evt = iCal.Create<DDay.iCal.Event>();
// Adjust the start/end date by one hour if the dates/times fall under daylight savings in the target timezone
if (targetTimeZone.IsDaylightSavingTime(endDt))
endDt = endDt.AddHours(-1);
evt.DTEnd = new iCalDateTime(endDt, tzid);
if (targetTimeZone.IsDaylightSavingTime(startDt))
startDt = startDt.AddHours(-1);
evt.DTStart = new iCalDateTime(startDt, tzid);