CalDavSynchronizer.DDayICalWorkaround.CalendarDataPreprocessor.FixTimeZoneDSTRRules C# (CSharp) Метод

FixTimeZoneDSTRRules() публичный статический Метод

public static FixTimeZoneDSTRRules ( TimeZoneInfo tz, ITimeZone iCalTz ) : void
tz System.TimeZoneInfo
iCalTz ITimeZone
Результат void
    public static void FixTimeZoneDSTRRules (TimeZoneInfo tz, ITimeZone iCalTz)
    {
      var adjustments = tz.GetAdjustmentRules();
      foreach (var tziItems in iCalTz.TimeZoneInfos)
      {
        var matchingAdj = adjustments.FirstOrDefault(a => (a.DateStart.Year == tziItems.Start.Year)) ?? adjustments.FirstOrDefault();
        if (matchingAdj != null)
        {
          if ((matchingAdj.DateEnd.Year != 9999) && !(tziItems.Name.Equals("STANDARD") && matchingAdj == adjustments.Last()))
          {
            tziItems.RecurrenceRules[0].Until =
              DateTime.SpecifyKind(matchingAdj.DateEnd.Date.AddDays(1).Subtract(tz.BaseUtcOffset), DateTimeKind.Utc);
          }
          if (tziItems.Name.Equals("STANDARD"))
          {
            if (!matchingAdj.DaylightTransitionEnd.IsFixedDateRule)
            {
              var startYear = tziItems.Start.Year;
              tziItems.Start = CalcTransitionStart(matchingAdj.DaylightTransitionEnd, startYear);
            }
          }
          else
          {
            if (!matchingAdj.DaylightTransitionStart.IsFixedDateRule)
            {
              var startYear = tziItems.Start.Year;
              tziItems.Start = CalcTransitionStart(matchingAdj.DaylightTransitionStart, startYear);
            }
          }
        }
      }
    }