static private void PopulateiCalTimeZoneInfo(ITimeZoneInfo tzi, System.TimeZoneInfo.TransitionTime transition, int year) { var c = CultureInfo.CurrentCulture.Calendar; var recurrence = new RecurrencePattern(); recurrence.Frequency = FrequencyType.Yearly; recurrence.ByMonth.Add(transition.Month); recurrence.ByHour.Add(transition.TimeOfDay.Hour); recurrence.ByMinute.Add(transition.TimeOfDay.Minute); if (transition.IsFixedDateRule) { recurrence.ByMonthDay.Add(transition.Day); } else { if (transition.Week != 5) { recurrence.ByDay.Add(new WeekDay(transition.DayOfWeek, transition.Week)); } else { recurrence.ByDay.Add(new WeekDay(transition.DayOfWeek, -1)); } } tzi.RecurrenceRules.Add(recurrence); }
static private void PopulateiCalTimeZoneInfo(ITimeZoneInfo tzi, System.TimeZoneInfo.TransitionTime transition, int year) { Calendar c = CultureInfo.CurrentCulture.Calendar; RecurrencePattern recurrence = new RecurrencePattern(); recurrence.Frequency = FrequencyType.Yearly; recurrence.ByMonth.Add(transition.Month); recurrence.ByHour.Add(transition.TimeOfDay.Hour); recurrence.ByMinute.Add(transition.TimeOfDay.Minute); if (transition.IsFixedDateRule) { recurrence.ByMonthDay.Add(transition.Day); } else { recurrence.ByDay.Add(new WeekDay(transition.DayOfWeek)); int daysInMonth = c.GetDaysInMonth(year, transition.Month); int offset = (transition.Week * 7) - 7; if (offset + 7 > daysInMonth) { offset = daysInMonth - 7; } // Add the possible days of the month this could occur. for (int i = 1; i <= 7; i++) { recurrence.ByMonthDay.Add(i + offset + (int)transition.DayOfWeek); } } tzi.RecurrenceRules.Add(recurrence); }
static private void PopulateiCalTimeZoneInfo(ITimeZoneInfo tzi, System.TimeZoneInfo.TransitionTime transition, int year) { Calendar c = CultureInfo.CurrentCulture.Calendar; RecurrencePattern recurrence = new RecurrencePattern(); recurrence.Frequency = FrequencyType.Yearly; recurrence.ByMonth.Add(transition.Month); recurrence.ByHour.Add(transition.TimeOfDay.Hour); recurrence.ByMinute.Add(transition.TimeOfDay.Minute); if (transition.IsFixedDateRule) { recurrence.ByMonthDay.Add(transition.Day); } else { recurrence.ByDay.Add(new WeekDay(transition.DayOfWeek)); int daysInMonth = c.GetDaysInMonth(year, transition.Month); int offset = (transition.Week * 7) - 7; if (offset + 7 > daysInMonth) offset = daysInMonth - 7; // Add the possible days of the month this could occur. for (int i = 1; i <= 7; i++) recurrence.ByMonthDay.Add(i + offset + (int)transition.DayOfWeek); } tzi.RecurrenceRules.Add(recurrence); }
public IDateTime ToTimeZone(TimeZoneObservance tzo) { ITimeZoneInfo tzi = tzo.TimeZoneInfo; if (tzi != null) { return(new iCalDateTime(tzi.OffsetTo.ToLocal(UTC), tzo)); } return(null); }
private static void PopulateTimeZoneInfoRecurrenceDates(ITimeZoneInfo tzi, List <ZoneInterval> intervals, TimeSpan delta) { foreach (var interval in intervals) { var periodList = new PeriodList(); var time = interval.IsoLocalStart.ToDateTimeUnspecified(); var date = new CalDateTime(time).Add(delta) as CalDateTime; if (date == null) { continue; } date.HasTime = true; periodList.Add(date); tzi.RecurrenceDates.Add(periodList); } }
/// <summary> /// Populates the cal time zone info. /// </summary> /// <param name="tzi">The time zone info.</param> /// <param name="transition">The transition.</param> private static void PopulateiCalTimeZoneInfo(ITimeZoneInfo tzi, TimeZoneInfo.TransitionTime transition) { var recurrence = new RecurrencePattern { Frequency = FrequencyType.Yearly }; recurrence.ByMonth.Add(transition.Month); recurrence.ByHour.Add(transition.TimeOfDay.Hour); recurrence.ByMinute.Add(transition.TimeOfDay.Minute); if (transition.IsFixedDateRule) { recurrence.ByMonthDay.Add(transition.Day); } else { recurrence.ByDay.Add(transition.Week != 5 ? new WeekDay(transition.DayOfWeek, transition.Week) : new WeekDay(transition.DayOfWeek, -1)); } tzi.RecurrenceRules.Add(recurrence); }
public static IDateTime MatchTimeZone(IDateTime dt1, IDateTime dt2) { Debug.Assert(dt1 != null && dt2 != null); // Associate the date/time with the first. IDateTime copy = dt2.Copy <IDateTime>(); copy.AssociateWith(dt1); // If the dt1 time does not occur in the same time zone as the // dt2 time, then let's convert it so they can be used in the // same context (i.e. evaluation). if (dt1.TZID != null) { ITimeZoneInfo tzi = dt1.TimeZoneObservance != null ? dt1.TimeZoneObservance.Value.TimeZoneInfo : null; if (!string.Equals(dt1.TZID, copy.TZID)) { return((tzi != null) ? copy.ToTimeZone(tzi) : copy.ToTimeZone(dt1.TZID)); } else { return(copy); } } else if (dt1.IsUniversalTime) { // The first date/time is in UTC time, convert! return(new iCalDateTime(copy.UTC)); } else { // The first date/time is in local time, convert! return(new iCalDateTime(copy.Local)); } }
static private void PopulateiCalTimeZoneInfo(ITimeZoneInfo tzi, System.TimeZoneInfo.TransitionTime transition, int year) { Calendar c = CultureInfo.CurrentCulture.Calendar; RecurrencePattern recurrence = new RecurrencePattern(); recurrence.Frequency = FrequencyType.Yearly; recurrence.ByMonth.Add(transition.Month); recurrence.ByHour.Add(transition.TimeOfDay.Hour); recurrence.ByMinute.Add(transition.TimeOfDay.Minute); if (transition.IsFixedDateRule) { recurrence.ByMonthDay.Add(transition.Day); } else { if( transition.Week != 5 ) recurrence.ByDay.Add(new WeekDay(transition.DayOfWeek, transition.Week )); else recurrence.ByDay.Add( new WeekDay( transition.DayOfWeek, -1 ) ); } tzi.RecurrenceRules.Add(recurrence); }
public TimeZoneInfoEvaluator(ITimeZoneInfo tzi) : base(tzi) { }
public TimeZoneObservance(IPeriod period, ITimeZoneInfo tzi) : this() { Period = period; TimeZoneInfo = tzi; }
public IDateTime ToTimeZone(ITimeZoneInfo tzi) { return new iCalDateTime(tzi.OffsetTo.ToLocal(UTC)); }
private static void PopulateTimeZoneInfoRecurrenceRules(ITimeZoneInfo tzi, ZoneInterval interval) { var recurrence = new IntervalRecurrencePattern(interval); tzi.RecurrenceRules.Add(recurrence); }
public IDateTime ToTimeZone(ITimeZoneInfo tzi) { return(new iCalDateTime(tzi.OffsetTo.ToLocal(UTC))); }