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); } }
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 ) )); }