public void WriteRule(PosixTz.DstRule rule)
 {
     rule.Match(
         fixedDateRule => {
         sb.Append("J");
         sb.Append(fixedDateRule.day);
     },
         dayOfYearRule => {
         sb.Append(dayOfYearRule.day);
     },
         dayOfWeekRule => {
         sb.Append("M");
         sb.Append(dayOfWeekRule.month);
         sb.Append(".");
         sb.Append(dayOfWeekRule.week);
         sb.Append(".");
         sb.Append(dayOfWeekRule.day);
     }
         );
     if (rule.time != PosixTz.DEFAULT_RULE_TIME)
     {
         sb.Append("/");
         WriteTime(rule.time);
     }
 }
Esempio n. 2
0
 public static TimeZoneInfo.TransitionTime ToSystemTransitionTime(this PosixTz.DstRule rule, int year)
 {
     return(rule.Match <TimeZoneInfo.TransitionTime>(
                fixedDate => {
         var date = fixedDate.GetDate();
         return TimeZoneInfo.TransitionTime.CreateFixedDateRule(
             fixedDate.time.ToSystemDateTime(),
             date.month + 1, date.day + 1
             );
     },
                dayOfYear => {
         var date = dayOfYear.GetDate(year);
         return TimeZoneInfo.TransitionTime.CreateFixedDateRule(
             dayOfYear.time.ToSystemDateTime(),
             date.month + 1, date.day + 1
             );
     },
                dayOfWeek => TimeZoneInfo.TransitionTime.CreateFloatingDateRule(
                    dayOfWeek.time.ToSystemDateTime(),
                    dayOfWeek.month, dayOfWeek.week, (DayOfWeek)dayOfWeek.day
                    )
                ));
 }