private void ConvertToExTimeZone()
        {
            ExTimeZoneInformation exTimeZoneInformation = new ExTimeZoneInformation("tzone://Microsoft/Custom", this.name);

            exTimeZoneInformation.AlternativeId = this.id;
            if (this.transitions.Transitions[0].GetType() != typeof(TimeZoneDefinition.Transition))
            {
                throw new TimeZoneException((Strings.IDs) 3332140560U, this.transitions, this.transitions.Transitions[0]);
            }
            for (int i = 0; i < this.transitions.Transitions.Length; i++)
            {
                DateTime?endTransition;
                if (i != this.transitions.Transitions.Length - 1)
                {
                    TimeZoneDefinition.AbsoluteDateTransition absoluteDateTransition = this.transitions.Transitions[i + 1] as TimeZoneDefinition.AbsoluteDateTransition;
                    if (absoluteDateTransition == null)
                    {
                        throw new TimeZoneException((Strings.IDs) 3644766027U, this.transitions, this.transitions.Transitions[i + 1]);
                    }
                    endTransition = new DateTime?(absoluteDateTransition.DateTime);
                }
                else
                {
                    endTransition = null;
                }
                ExTimeZoneRuleGroup exTimeZoneRuleGroup = new ExTimeZoneRuleGroup(endTransition);
                this.AddRulesToRuleGroup(exTimeZoneRuleGroup, this.transitions.Transitions[i], this.transitions);
                if (exTimeZoneRuleGroup.Rules.Count != 0)
                {
                    exTimeZoneInformation.AddGroup(exTimeZoneRuleGroup);
                }
            }
            try
            {
                this.timeZone = new ExTimeZone(exTimeZoneInformation);
            }
            catch (ArgumentException exception)
            {
                throw new TimeZoneException(exception);
            }
            catch (NotImplementedException exception2)
            {
                throw new TimeZoneException(exception2);
            }
            catch (InvalidOperationException exception3)
            {
                throw new TimeZoneException(exception3);
            }
        }
        private static ExTimeZone LoadGmtTimeZone()
        {
            ExTimeZone result;

            if (!ExTimeZoneEnumerator.Instance.TryGetTimeZoneByName("Greenwich Standard Time", out result))
            {
                ExTimeZoneInformation exTimeZoneInformation = new ExTimeZoneInformation("Greenwich Standard Time", "Greenwich Standard Time");
                ExTimeZoneRuleGroup   exTimeZoneRuleGroup   = new ExTimeZoneRuleGroup(null);
                ExTimeZoneRule        ruleInfo = new ExTimeZoneRule("Standard", "Standard", new TimeSpan(0L), null);
                exTimeZoneRuleGroup.AddRule(ruleInfo);
                exTimeZoneInformation.AddGroup(exTimeZoneRuleGroup);
                result = new ExTimeZone(exTimeZoneInformation);
            }
            return(result);
        }