public List <GPTimeZone> getTimeZones() { if (tzonesList == null) { tzonesList = new List <GPTimeZone>(); XmlNode node = getMainNode(); XmlElement elem = node as XmlElement; foreach (XmlElement item in elem.ChildNodes) { if (item.Name == "timezone") { GPTimeZone tzone = new GPTimeZone(); tzone.Id = LastId++; foreach (XmlElement subs in item.ChildNodes) { if (subs.Name == "name") { tzone.Name = subs.InnerText; } else if (subs.Name == "transition") { GPTimeZone.Transition trans = new GPTimeZone.Transition(); if (subs.HasAttribute("date")) { trans.setDateString(subs.GetAttribute("date")); } if (subs.HasAttribute("offset")) { int.TryParse(subs.GetAttribute("offset"), out trans.OffsetInSeconds); } if (subs.HasAttribute("abbr")) { trans.Abbreviation = subs.GetAttribute("abbr"); } if (subs.HasAttribute("dst")) { int dst = 0; int.TryParse(subs.GetAttribute("dst"), out dst); trans.Dst = ((dst == 1) ? true : false); if (trans.Dst == false && tzone.OffsetSeconds == 0) { tzone.OffsetSeconds = trans.OffsetInSeconds; } } tzone.Transitions.Add(trans); } } tzone.RefreshEnds(); if (tzone.Name.Length > 0) { tzonesList.Add(tzone); } } } } return(tzonesList); }
public List <GPTimeZone> getTimeZones() { if (tzonesList == null) { tzonesList = new List <GPTimeZone>(); XmlNode node = getMainNode(); XmlElement elem = node as XmlElement; string s1; foreach (XmlElement item in elem.ChildNodes) { if (item.Name == "timezone") { GPTimeZone tzone = new GPTimeZone(); if (item.HasAttribute("normalAbbr")) { tzone.NormalAbbr = item.GetAttribute("normalAbbr"); } if (item.HasAttribute("dstAbbr")) { tzone.DstAbbr = item.GetAttribute("dstAbbr"); } if (item.HasAttribute("offset")) { s1 = item.GetAttribute("offset"); tzone.OffsetSeconds = 0; int.TryParse(s1, out tzone.OffsetSeconds); tzone.OffsetSeconds *= 60; } if (item.HasAttribute("dst")) { tzone.DstUsed = item.GetAttribute("dst").Equals("True"); } tzone.Id = getNextId(); foreach (XmlElement subs in item.ChildNodes) { if (subs.Name == "name") { tzone.Name = subs.InnerText; } else if (subs.Name == "transition") { GPTimeZone.Transition trans = new GPTimeZone.Transition(); if (subs.HasAttribute("date")) { trans.startDate = GPTimeZone.Transition.recognizeDateTime(subs.GetAttribute("date")); } if (subs.HasAttribute("datend")) { trans.endDate = GPTimeZone.Transition.recognizeDateTime(subs.GetAttribute("datend")); } if (subs.HasAttribute("offset")) { int.TryParse(subs.GetAttribute("offset"), out trans.OffsetInSeconds); trans.OffsetInSeconds *= 60; } tzone.Transitions.Add(trans); } else if (subs.Name.Equals("rule")) { GPTimeZone.Rule rule = new GPTimeZone.Rule(); if (subs.HasAttribute("ruleStart")) { rule.startDay = GPTimeZone.Rule.recognizeDaySpec(subs.GetAttribute("ruleStart")); } if (subs.HasAttribute("ruleEnd")) { rule.endDay = GPTimeZone.Rule.recognizeDaySpec(subs.GetAttribute("ruleEnd")); } if (subs.HasAttribute("yearStart")) { int.TryParse(subs.GetAttribute("yearStart"), out rule.startYear); } if (subs.HasAttribute("yearEnd")) { int.TryParse(subs.GetAttribute("yearEnd"), out rule.endYear); } if (subs.HasAttribute("offset")) { int.TryParse(subs.GetAttribute("offset"), out rule.OffsetSeconds); rule.OffsetSeconds *= 60; } tzone.Rules.Add(rule); } } // tzone.RefreshEnds(); if (tzone.Name.Length > 0) { tzonesList.Add(tzone); } } } } return(tzonesList); }