public string GetHasherString() { StringBuilder builder = new StringBuilder(); builder.Append("Pattern Start Date: " + PatternStartDate); builder.Append("Pattern End Date: " + PatternEndDate); builder.Append("Duration: " + Duration); builder.Append("Occurrences: " + Occurrences); builder.Append("Interval: " + Interval); builder.Append("Instance: " + Instance); builder.Append("Start Time: " + StartTime); builder.Append("End Time: " + EndTime); builder.Append("Month of Year: " + MonthOfYear); builder.Append("Day of Month: " + DayOfMonth); builder.Append("No End Date: " + (NoEndDate ? "Yes" : "No")); if (Type == RecurrenceType.Daily) { builder.Append("Daily Recurrence"); } else if (Type == RecurrenceType.MonthNth) { builder.Append("MonthNth Recurrence"); } else if (Type == RecurrenceType.Monthly) { builder.Append("Monthly Recurrence"); } else if (Type == RecurrenceType.Weekly) { builder.Append("Weekly Recurrence"); } else if (Type == RecurrenceType.YearNth) { builder.Append("YearNth Recurrence"); } else if (Type == RecurrenceType.Yearly) { builder.Append("Yearly Recurrence"); } if (DaysOfTheWeekMask != 0) { if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Monday)) { builder.Append("Monday | "); } if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Tuesday)) { builder.Append("Tuesday | "); } if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Wednesday)) { builder.Append("Wednesday | "); } if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Thursday)) { builder.Append("Thursday | "); } if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Friday)) { builder.Append("Friday | "); } if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Saturday)) { builder.Append("Saturday | "); } if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Sunday)) { builder.Append("Sunday | "); } builder.Remove(builder.Length - 2, 2); } return(builder.ToString()); }
public string GetGoogleRecurrenceString() { var builder = new StringBuilder(); // RRULE:FREQ=WEEKLY;UNTIL=20160415T200000Z;BYDAY=WE,FR builder.Append("RRULE:"); builder.Append("FREQ="); switch (Type) { case RecurrenceType.Daily: builder.Append("DAILY;"); break; case RecurrenceType.Weekly: builder.Append("WEEKLY;"); break; case RecurrenceType.Monthly: builder.Append("MONTHLY;"); break; case RecurrenceType.MonthNth: builder.Append("MONTHLY;"); break; case RecurrenceType.Yearly: builder.Append("YEARLY;"); break; case RecurrenceType.YearNth: builder.Append("YEARLY;"); break; } if (PatternEndDate != null && !NoEndDate) { builder.Append("UNTIL="); var date = DateTime.ParseExact($"{PatternEndDate}T{EndTime}", "yyyy-MM-ddTHH:mm:sszzz", CultureInfo.InvariantCulture); builder.Append(date.ToUniversalTime().ToString("yyyyMMddTHHmmssZ") + ";"); } if (DaysOfTheWeekMask != 0) { builder.Append("BYDAY="); if (Instance != 0) { builder.Append(Instance); } if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Sunday)) { builder.Append("SU,"); } if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Monday)) { builder.Append("MO,"); } if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Tuesday)) { builder.Append("TU,"); } if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Wednesday)) { builder.Append("WE,"); } if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Thursday)) { builder.Append("TH,"); } if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Friday)) { builder.Append("FR,"); } if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Saturday)) { builder.Append("SA,"); } builder.Remove(builder.Length - 1, 1); builder.Append(";"); } if (Type == RecurrenceType.Yearly) { builder.Append("BYMONTH="); builder.Append(MonthOfYear + ";"); } if (Interval > 1 && Type != RecurrenceType.Yearly) { builder.Append("INTERVAL=" + Interval + ";"); } builder.Remove(builder.Length - 1, 1); return(builder.ToString()); }