public void FixedZone_Eastern()
 {
     var offset = Offset.FromHours(5);
     var builder = new DateTimeZoneBuilder();
     builder.SetStandardOffset(offset);
     builder.SetFixedSavings("GMT-5", Offset.Zero);
     var zone = builder.ToDateTimeZone("GMT-5");
     FixedDateTimeZone fixedZone = (FixedDateTimeZone)zone;
     Assert.AreEqual(offset, fixedZone.Offset);
 }
Esempio n. 2
0
        public void FixedZone_Eastern()
        {
            var offset = Offset.FromHours(5);
            var rules  = new List <ZoneRuleSet> {
                new ZoneRuleSet("GMT-5", offset, Offset.Zero, int.MaxValue, null)
            };
            var zone = DateTimeZoneBuilder.Build("GMT-5", rules);
            FixedDateTimeZone fixedZone = (FixedDateTimeZone)zone;

            Assert.AreEqual(offset, fixedZone.Offset);
        }
        public void FixedZone_Eastern()
        {
            var offset  = Offset.FromHours(5);
            var builder = new DateTimeZoneBuilder();

            builder.SetStandardOffset(offset);
            builder.SetFixedSavings("GMT-5", Offset.Zero);
            var zone = builder.ToDateTimeZone("GMT-5");
            FixedDateTimeZone fixedZone = (FixedDateTimeZone)zone;

            Assert.AreEqual(offset, fixedZone.Offset);
        }
Esempio n. 4
0
 /// <summary>
 /// Builds a time zone with the given ID from a sequence of rule sets.
 /// </summary>
 internal static DateTimeZone Build(string id, IList<ZoneRuleSet> ruleSets)
 {
     Preconditions.CheckArgument(ruleSets.Count > 0, nameof(ruleSets), "Cannot create a time zone without any Zone entries");
     var builder = new DateTimeZoneBuilder();
     return builder.BuildZone(id, ruleSets);
 }
Esempio n. 5
0
 /// <summary>
 /// Adds a recurring savings rule to the time zone builder.
 /// </summary>
 /// <param name="builder">The <see cref="DateTimeZoneBuilder" /> to add to.</param>
 /// <param name="nameFormat">The name format pattern.</param>
 /// <param name="ruleSet">The <see cref="ZoneRecurrenceCollection" /> describing the recurring savings.</param>
 private static void AddRecurring(DateTimeZoneBuilder builder, String nameFormat, IEnumerable<ZoneRule> ruleSet)
 {
     foreach (var rule in ruleSet)
     {
         string name = rule.FormatName(nameFormat);
         builder.AddRecurringSavings(rule.Recurrence.WithName(name));
     }
 }
Esempio n. 6
0
 /// <summary>
 /// Returns a newly created <see cref="DateTimeZone" /> built from the given time zone data.
 /// </summary>
 /// <param name="zoneList">The time zone definition parts to add.</param>
 private DateTimeZone CreateTimeZone(ZoneList zoneList)
 {
     var builder = new DateTimeZoneBuilder();
     foreach (Zone zone in zoneList)
     {
         builder.SetStandardOffset(zone.Offset);
         if (zone.Rules == null)
         {
             builder.SetFixedSavings(zone.Format, Offset.Zero);
         }
         else
         {
             IList<ZoneRule> ruleSet;
             if (Rules.TryGetValue(zone.Rules, out ruleSet))
             {
                 AddRecurring(builder, zone.Format, ruleSet);
             }
             else
             {
                 try
                 {
                     // Check if Rules actually just refers to a savings.
                     var savings = ParserHelper.ParseOffset(zone.Rules);
                     builder.SetFixedSavings(zone.Format, savings);
                 }
                 catch (FormatException)
                 {
                     throw new ArgumentException(
                         String.Format("Daylight savings rule name '{0}' for zone {1} is neither a known ruleset nor a fixed offset",
                             zone.Rules, zone.Name));
                 }
             }
         }
         if (zone.UntilYear == Int32.MaxValue)
         {
             break;
         }
         builder.AddCutover(zone.UntilYear, zone.UntilYearOffset);
     }
     return builder.ToDateTimeZone(zoneList.Name);
 }