private static OlDaysOfWeek getDOWmask(String byDay) { OlDaysOfWeek dowMask = 0; if (byDay.Contains("MO")) { dowMask |= OlDaysOfWeek.olMonday; } if (byDay.Contains("TU")) { dowMask |= OlDaysOfWeek.olTuesday; } if (byDay.Contains("WE")) { dowMask |= OlDaysOfWeek.olWednesday; } if (byDay.Contains("TH")) { dowMask |= OlDaysOfWeek.olThursday; } if (byDay.Contains("FR")) { dowMask |= OlDaysOfWeek.olFriday; } if (byDay.Contains("SA")) { dowMask |= OlDaysOfWeek.olSaturday; } if (byDay.Contains("SU")) { dowMask |= OlDaysOfWeek.olSunday; } return(dowMask); }
/// <summary> /// Gets the day of week. /// </summary> /// <param name="value">The value.</param> /// <returns>The Day of Week.</returns> public static string GetDayOfWeek(this OlDaysOfWeek value) { switch (value) { case OlDaysOfWeek.olMonday: return("MO"); case OlDaysOfWeek.olTuesday: return("TU"); case OlDaysOfWeek.olWednesday: return("WE"); case OlDaysOfWeek.olThursday: return("TH"); case OlDaysOfWeek.olFriday: return("FR"); case OlDaysOfWeek.olSaturday: return("SA"); case OlDaysOfWeek.olSunday: return("SU"); } return("MO"); }
public static void MapDayOfWeek1To2(OlDaysOfWeek source, IList <IWeekDay> target) { if ((source & OlDaysOfWeek.olMonday) > 0) { target.Add(new WeekDay(DayOfWeek.Monday)); } if ((source & OlDaysOfWeek.olTuesday) > 0) { target.Add(new WeekDay(DayOfWeek.Tuesday)); } if ((source & OlDaysOfWeek.olWednesday) > 0) { target.Add(new WeekDay(DayOfWeek.Wednesday)); } if ((source & OlDaysOfWeek.olThursday) > 0) { target.Add(new WeekDay(DayOfWeek.Thursday)); } if ((source & OlDaysOfWeek.olFriday) > 0) { target.Add(new WeekDay(DayOfWeek.Friday)); } if ((source & OlDaysOfWeek.olSaturday) > 0) { target.Add(new WeekDay(DayOfWeek.Saturday)); } if ((source & OlDaysOfWeek.olSunday) > 0) { target.Add(new WeekDay(DayOfWeek.Sunday)); } }
private static OlDaysOfWeek getDOWmask(Dictionary <String, String> ruleBook) { OlDaysOfWeek dowMask = 0; if (ruleBook.ContainsKey("BYDAY")) { dowMask = getDOWmask(ruleBook["BYDAY"]); } return(dowMask); }
private static WeekDay ConvertWeekDays(OlDaysOfWeek olDaysOfWeek) { WeekDay result = 0; foreach (var kv in WeekDayMap) { if (olDaysOfWeek.HasFlag(kv.Key)) { result |= kv.Value; } } return(result); }
private static String getByDay(OlDaysOfWeek dowMask) { string byDay = ""; byDay += (((dowMask & OlDaysOfWeek.olMonday) != 0) ? "MO," : ""); byDay += (((dowMask & OlDaysOfWeek.olTuesday) != 0) ? "TU," : ""); byDay += (((dowMask & OlDaysOfWeek.olWednesday) != 0) ? "WE," : ""); byDay += (((dowMask & OlDaysOfWeek.olThursday) != 0) ? "TH," : ""); byDay += (((dowMask & OlDaysOfWeek.olFriday) != 0) ? "FR," : ""); byDay += (((dowMask & OlDaysOfWeek.olSaturday) != 0) ? "SA," : ""); byDay += (((dowMask & OlDaysOfWeek.olSunday) != 0) ? "SU," : ""); return(byDay.Substring(0, byDay.Length - 1)); }
private static List <String> getByDay(OlDaysOfWeek dowMask) { log.Fine("DayOfWeekMask = " + dowMask); List <String> byDay = new List <String>(); byDay.Add(((dowMask & OlDaysOfWeek.olMonday) != 0) ? "MO" : ""); byDay.Add(((dowMask & OlDaysOfWeek.olTuesday) != 0) ? "TU" : ""); byDay.Add(((dowMask & OlDaysOfWeek.olWednesday) != 0) ? "WE" : ""); byDay.Add(((dowMask & OlDaysOfWeek.olThursday) != 0) ? "TH" : ""); byDay.Add(((dowMask & OlDaysOfWeek.olFriday) != 0) ? "FR" : ""); byDay.Add(((dowMask & OlDaysOfWeek.olSaturday) != 0) ? "SA" : ""); byDay.Add(((dowMask & OlDaysOfWeek.olSunday) != 0) ? "SU" : ""); byDay = byDay.Where(s => !string.IsNullOrEmpty(s)).ToList(); return(byDay); }
public static void MapDayOfWeek1To2 (OlDaysOfWeek source, IList<IWeekDay> target) { if ((source & OlDaysOfWeek.olMonday) > 0) target.Add (new WeekDay (DayOfWeek.Monday)); if ((source & OlDaysOfWeek.olTuesday) > 0) target.Add (new WeekDay (DayOfWeek.Tuesday)); if ((source & OlDaysOfWeek.olWednesday) > 0) target.Add (new WeekDay (DayOfWeek.Wednesday)); if ((source & OlDaysOfWeek.olThursday) > 0) target.Add (new WeekDay (DayOfWeek.Thursday)); if ((source & OlDaysOfWeek.olFriday) > 0) target.Add (new WeekDay (DayOfWeek.Friday)); if ((source & OlDaysOfWeek.olSaturday) > 0) target.Add (new WeekDay (DayOfWeek.Saturday)); if ((source & OlDaysOfWeek.olSunday) > 0) target.Add (new WeekDay (DayOfWeek.Sunday)); }
public static OlDaysOfWeek MapDayOfWeek2To1(IList <IWeekDay> source) { OlDaysOfWeek target = 0; foreach (var day in source) { switch (day.DayOfWeek) { case DayOfWeek.Monday: target |= OlDaysOfWeek.olMonday; break; case DayOfWeek.Tuesday: target |= OlDaysOfWeek.olTuesday; break; case DayOfWeek.Wednesday: target |= OlDaysOfWeek.olWednesday; break; case DayOfWeek.Thursday: target |= OlDaysOfWeek.olThursday; break; case DayOfWeek.Friday: target |= OlDaysOfWeek.olFriday; break; case DayOfWeek.Saturday: target |= OlDaysOfWeek.olSaturday; break; case DayOfWeek.Sunday: target |= OlDaysOfWeek.olSunday; break; } } return(target); }
private void buildOutlookPattern(Event ev, AppointmentItem ai, out RecurrencePattern oPattern) { if (ev.Recurrence == null) { oPattern = null; return; } Dictionary <String, String> ruleBook = explodeRrule(ev.Recurrence); if (ruleBook == null) { throw new ApplicationException("WARNING: The recurrence pattern is not compatible with Outlook. This event cannot be synced."); } log.Fine("Building Outlook recurrence pattern"); oPattern = ai.GetRecurrencePattern(); #region RECURRENCE PATTERN //RRULE:FREQ=WEEKLY;UNTIL=20150906T000000Z;BYDAY=SA switch (ruleBook["FREQ"]) { case "DAILY": { oPattern.RecurrenceType = OlRecurrenceType.olRecursDaily; break; } case "WEEKLY": { oPattern.RecurrenceType = OlRecurrenceType.olRecursWeekly; // Need to work out dayMask from "BY" pattern // Eg "BYDAY=MO,TU,WE,TH,FR" OlDaysOfWeek dowMask = getDOWmask(ruleBook); if (dowMask != 0) { oPattern.DayOfWeekMask = dowMask; } break; } case "MONTHLY": { oPattern.RecurrenceType = OlRecurrenceType.olRecursMonthly; if (ruleBook.ContainsKey("BYSETPOS")) { oPattern.RecurrenceType = OlRecurrenceType.olRecursMonthNth; int gInstance = Convert.ToInt16(ruleBook["BYSETPOS"]); oPattern.Instance = (gInstance == -1) ? 5 : gInstance; oPattern.DayOfWeekMask = getDOWmask(ruleBook); if (oPattern.DayOfWeekMask == (OlDaysOfWeek)127 && gInstance == -1 && (ev.Start.DateTime ?? DateTime.Parse(ev.Start.Date)).Day > 28) { //In Outlook this is simply a monthly recurring oPattern.RecurrenceType = OlRecurrenceType.olRecursMonthly; } } if (ruleBook.ContainsKey("BYDAY")) { if (ruleBook["BYDAY"].StartsWith("-1")) { oPattern.RecurrenceType = OlRecurrenceType.olRecursMonthNth; oPattern.Instance = 5; oPattern.DayOfWeekMask = getDOWmask(ruleBook["BYDAY"].TrimStart("-1".ToCharArray())); } else if ("1,2,3,4".Contains(ruleBook["BYDAY"].Substring(0, 1))) { oPattern.RecurrenceType = OlRecurrenceType.olRecursMonthNth; oPattern.Instance = Convert.ToInt16(ruleBook["BYDAY"].Substring(0, 1)); oPattern.DayOfWeekMask = getDOWmask(ruleBook["BYDAY"].TrimStart(oPattern.Instance.ToString().ToCharArray())); } } break; } case "YEARLY": { oPattern.RecurrenceType = OlRecurrenceType.olRecursYearly; //Google interval is years, Outlook is months if (ruleBook.ContainsKey("INTERVAL") && Convert.ToInt16(ruleBook["INTERVAL"]) > 1) { oPattern.Interval = Convert.ToInt16(ruleBook["INTERVAL"]) * 12; } if (ruleBook.ContainsKey("BYSETPOS")) { oPattern.RecurrenceType = OlRecurrenceType.olRecursYearNth; int gInstance = Convert.ToInt16(ruleBook["BYSETPOS"]); oPattern.Instance = (gInstance == -1) ? 5 : gInstance; oPattern.DayOfWeekMask = getDOWmask(ruleBook); if (ruleBook.ContainsKey("BYMONTH")) { oPattern.MonthOfYear = Convert.ToInt16(ruleBook["BYMONTH"]); } } break; } } #endregion #region RANGE ai = OutlookOgcs.Calendar.Instance.IOutlook.WindowsTimeZone_set(ai, ev); oPattern.PatternStartDate = ev.Start.DateTime ?? DateTime.Parse(ev.Start.Date); if (ruleBook.ContainsKey("INTERVAL") && Convert.ToInt16(ruleBook["INTERVAL"]) > 1 && ruleBook["FREQ"] != "YEARLY") { oPattern.Interval = Convert.ToInt16(ruleBook["INTERVAL"]); } if (ruleBook.ContainsKey("COUNT")) { oPattern.Occurrences = Convert.ToInt16(ruleBook["COUNT"]); } if (ruleBook.ContainsKey("UNTIL")) { if (ruleBook["UNTIL"].StartsWith("4500")) { log.Warn("Outlook can't handle end dates this far in the future. Converting to no end date."); oPattern.NoEndDate = true; } else { DateTime endDate; if (ruleBook["UNTIL"].Length == 8 && !ruleBook["UNTIL"].EndsWith("Z")) { endDate = DateTime.ParseExact(ruleBook["UNTIL"], "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture).Date; } else { endDate = DateTime.ParseExact(ruleBook["UNTIL"], "yyyyMMddTHHmmssZ", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AdjustToUniversal); endDate = endDate.AddHours(TimezoneDB.GetUtcOffset(ev.End.TimeZone)).Date; } if (endDate < oPattern.PatternStartDate) { log.Debug("PatternStartDate: " + oPattern.PatternStartDate.ToString("yyyyMMddHHmmss")); log.Debug("PatternEndDate: " + ruleBook["UNTIL"].ToString()); String summary = GoogleOgcs.Calendar.GetEventSummary(ev, onlyIfNotVerbose: true); Forms.Main.Instance.Console.Update(summary + "The recurring Google event has an end date <i>before</i> the start date, which Outlook doesn't allow.<br/>" + "The synced Outlook recurrence has been changed to a single occurrence.", Console.Markup.warning); oPattern.Occurrences = 1; } else { oPattern.PatternEndDate = endDate; } } } if (!ruleBook.ContainsKey("COUNT") && !ruleBook.ContainsKey("UNTIL")) { oPattern.NoEndDate = true; } #endregion }
private static List <IWeekDay> ExtractDaysOfWeek(OlDaysOfWeek outlookDaysOfWeekMask) { Log.Info(String.Format("Extracting days of week from outlookDaysOfWeekMask [{0}]", outlookDaysOfWeekMask)); var myDaysOfWeekMask = new List <IWeekDay>(); // if (outlookDaysOfWeekMask.HasFlag(OlDaysOfWeek.olMonday)) { Log.Debug("Monday"); myDaysOfWeekMask.Add(new WeekDay { DayOfWeek = DayOfWeek.Monday }); } if (outlookDaysOfWeekMask.HasFlag(OlDaysOfWeek.olTuesday)) { Log.Debug("Tuesday"); myDaysOfWeekMask.Add(new WeekDay { DayOfWeek = DayOfWeek.Tuesday }); } if (outlookDaysOfWeekMask.HasFlag(OlDaysOfWeek.olWednesday)) { Log.Debug("Wednesday"); myDaysOfWeekMask.Add(new WeekDay { DayOfWeek = DayOfWeek.Wednesday }); } if (outlookDaysOfWeekMask.HasFlag(OlDaysOfWeek.olThursday)) { Log.Debug("Thursday"); myDaysOfWeekMask.Add(new WeekDay { DayOfWeek = DayOfWeek.Thursday }); } if (outlookDaysOfWeekMask.HasFlag(OlDaysOfWeek.olFriday)) { Log.Debug("Friday"); myDaysOfWeekMask.Add(new WeekDay { DayOfWeek = DayOfWeek.Friday }); } if (outlookDaysOfWeekMask.HasFlag(OlDaysOfWeek.olSaturday)) { Log.Debug("Saturday"); myDaysOfWeekMask.Add(new WeekDay { DayOfWeek = DayOfWeek.Saturday }); } if (outlookDaysOfWeekMask.HasFlag(OlDaysOfWeek.olSunday)) { Log.Debug("Sunday"); myDaysOfWeekMask.Add(new WeekDay { DayOfWeek = DayOfWeek.Sunday }); } return(myDaysOfWeekMask); }
public void BuildOutlookPattern(Event ev, AppointmentItem ai, out RecurrencePattern oPattern) { if (ev.Recurrence == null) { oPattern = null; return; } Dictionary <String, String> ruleBook = explodeRrule(ev.Recurrence); log.Fine("Building Outlook recurrence pattern"); oPattern = ai.GetRecurrencePattern(); #region RECURRENCE PATTERN //RRULE:FREQ=WEEKLY;UNTIL=20150906T000000Z;BYDAY=SA switch (ruleBook["FREQ"]) { case "DAILY": { oPattern.RecurrenceType = OlRecurrenceType.olRecursDaily; break; } case "WEEKLY": { oPattern.RecurrenceType = OlRecurrenceType.olRecursWeekly; // Need to work out dayMask from "BY" pattern // Eg "BYDAY=MO,TU,WE,TH,FR" OlDaysOfWeek dowMask = getDOWmask(ruleBook); if (dowMask != 0) { oPattern.DayOfWeekMask = dowMask; } break; } case "MONTHLY": { oPattern.RecurrenceType = OlRecurrenceType.olRecursMonthly; if (ruleBook.ContainsKey("BYSETPOS")) { oPattern.RecurrenceType = OlRecurrenceType.olRecursMonthNth; int gInstance = Convert.ToInt16(ruleBook["BYSETPOS"]); oPattern.Instance = (gInstance == -1) ? 5 : gInstance; oPattern.DayOfWeekMask = getDOWmask(ruleBook); if (oPattern.DayOfWeekMask == (OlDaysOfWeek)127 && gInstance == -1 && DateTime.Parse(ev.Start.DateTime ?? ev.Start.Date).Day > 28) { //In Outlook this is simply a monthly recurring oPattern.RecurrenceType = OlRecurrenceType.olRecursMonthly; oPattern.DayOfWeekMask = 0; } } if (ruleBook.ContainsKey("BYDAY")) { if (ruleBook["BYDAY"].StartsWith("-1")) { oPattern.RecurrenceType = OlRecurrenceType.olRecursMonthNth; oPattern.Instance = 5; oPattern.DayOfWeekMask = getDOWmask(ruleBook["BYDAY"].TrimStart("-1".ToCharArray())); } else if ("1,2,3,4".Contains(ruleBook["BYDAY"].Substring(0, 1))) { oPattern.RecurrenceType = OlRecurrenceType.olRecursMonthNth; oPattern.Instance = Convert.ToInt16(ruleBook["BYDAY"].Substring(0, 1)); oPattern.DayOfWeekMask = getDOWmask(ruleBook["BYDAY"].TrimStart(oPattern.Instance.ToString().ToCharArray())); } } break; } case "YEARLY": { oPattern.RecurrenceType = OlRecurrenceType.olRecursYearly; //Google interval is years, Outlook is months if (ruleBook.ContainsKey("INTERVAL")) { oPattern.Interval = Convert.ToInt16(ruleBook["INTERVAL"]) * 12; } if (ruleBook.ContainsKey("BYSETPOS")) { oPattern.RecurrenceType = OlRecurrenceType.olRecursYearNth; int gInstance = Convert.ToInt16(ruleBook["BYSETPOS"]); oPattern.Instance = (gInstance == -1) ? 5 : gInstance; oPattern.DayOfWeekMask = getDOWmask(ruleBook); if (ruleBook.ContainsKey("BYMONTH")) { oPattern.MonthOfYear = Convert.ToInt16(ruleBook["BYMONTH"]); } } break; } } #endregion #region RANGE if (ruleBook.ContainsKey("INTERVAL") && Convert.ToInt16(ruleBook["INTERVAL"]) > 1 && ruleBook["FREQ"] != "YEARLY") { oPattern.Interval = Convert.ToInt16(ruleBook["INTERVAL"]); } if (ruleBook.ContainsKey("COUNT")) { oPattern.Occurrences = Convert.ToInt16(ruleBook["COUNT"]); } if (ruleBook.ContainsKey("UNTIL")) { if (ruleBook["UNTIL"].Length == 8) { oPattern.PatternEndDate = DateTime.ParseExact(ruleBook["UNTIL"], "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); } else { if (ruleBook["UNTIL"].ToString().Substring(8) == "T000000Z" && ev.Start.DateTime != null) { oPattern.PatternEndDate = DateTime.ParseExact(ruleBook["UNTIL"], "yyyyMMddTHHmmssZ", System.Globalization.CultureInfo.InvariantCulture).AddDays(-1); } else { oPattern.PatternEndDate = DateTime.ParseExact(ruleBook["UNTIL"], "yyyyMMddTHHmmssZ", System.Globalization.CultureInfo.InvariantCulture); } } } #endregion ai = OutlookCalendar.Instance.IOutlook.WindowsTimeZone_set(ai, ev); }
private void buildOutlookPattern(Event ev, AppointmentItem ai, out RecurrencePattern oPattern) { if (ev.Recurrence == null) { oPattern = null; return; } Dictionary <String, String> ruleBook = explodeRrule(ev.Recurrence); if (ruleBook == null) { throw new ApplicationException("WARNING: The recurrence pattern is not compatible with Outlook. This event cannot be synced."); } log.Fine("Building Outlook recurrence pattern"); oPattern = ai.GetRecurrencePattern(); #region RECURRENCE PATTERN //RRULE:FREQ=WEEKLY;UNTIL=20150906T000000Z;BYDAY=SA switch (ruleBook["FREQ"]) { case "DAILY": { oPattern.RecurrenceType = OlRecurrenceType.olRecursDaily; break; } case "WEEKLY": { oPattern.RecurrenceType = OlRecurrenceType.olRecursWeekly; // Need to work out dayMask from "BY" pattern // Eg "BYDAY=MO,TU,WE,TH,FR" OlDaysOfWeek dowMask = getDOWmask(ruleBook); if (dowMask != 0) { oPattern.DayOfWeekMask = dowMask; } break; } case "MONTHLY": { oPattern.RecurrenceType = OlRecurrenceType.olRecursMonthly; if (ruleBook.ContainsKey("BYSETPOS")) { oPattern.RecurrenceType = OlRecurrenceType.olRecursMonthNth; int gInstance = Convert.ToInt16(ruleBook["BYSETPOS"]); oPattern.Instance = (gInstance == -1) ? 5 : gInstance; oPattern.DayOfWeekMask = getDOWmask(ruleBook); if (oPattern.DayOfWeekMask == (OlDaysOfWeek)127 && gInstance == -1 && (ev.Start.DateTime ?? DateTime.Parse(ev.Start.Date)).Day > 28) { //In Outlook this is simply a monthly recurring oPattern.RecurrenceType = OlRecurrenceType.olRecursMonthly; } } if (ruleBook.ContainsKey("BYDAY")) { if (ruleBook["BYDAY"].StartsWith("-1")) { oPattern.RecurrenceType = OlRecurrenceType.olRecursMonthNth; oPattern.Instance = 5; oPattern.DayOfWeekMask = getDOWmask(ruleBook["BYDAY"].TrimStart("-1".ToCharArray())); } else if ("1,2,3,4".Contains(ruleBook["BYDAY"].Substring(0, 1))) { oPattern.RecurrenceType = OlRecurrenceType.olRecursMonthNth; oPattern.Instance = Convert.ToInt16(ruleBook["BYDAY"].Substring(0, 1)); oPattern.DayOfWeekMask = getDOWmask(ruleBook["BYDAY"].TrimStart(oPattern.Instance.ToString().ToCharArray())); } } break; } case "YEARLY": { oPattern.RecurrenceType = OlRecurrenceType.olRecursYearly; //Google interval is years, Outlook is months if (ruleBook.ContainsKey("INTERVAL") && Convert.ToInt16(ruleBook["INTERVAL"]) > 1) { oPattern.Interval = Convert.ToInt16(ruleBook["INTERVAL"]) * 12; } if (ruleBook.ContainsKey("BYSETPOS")) { oPattern.RecurrenceType = OlRecurrenceType.olRecursYearNth; int gInstance = Convert.ToInt16(ruleBook["BYSETPOS"]); oPattern.Instance = (gInstance == -1) ? 5 : gInstance; oPattern.DayOfWeekMask = getDOWmask(ruleBook); if (ruleBook.ContainsKey("BYMONTH")) { oPattern.MonthOfYear = Convert.ToInt16(ruleBook["BYMONTH"]); } } break; } } #endregion #region RANGE ai = OutlookOgcs.Calendar.Instance.IOutlook.WindowsTimeZone_set(ai, ev); oPattern.PatternStartDate = ev.Start.DateTime ?? DateTime.Parse(ev.Start.Date); if (ruleBook.ContainsKey("INTERVAL") && Convert.ToInt16(ruleBook["INTERVAL"]) > 1 && ruleBook["FREQ"] != "YEARLY") { oPattern.Interval = Convert.ToInt16(ruleBook["INTERVAL"]); } if (ruleBook.ContainsKey("COUNT")) { oPattern.Occurrences = Convert.ToInt16(ruleBook["COUNT"]); } if (ruleBook.ContainsKey("UNTIL")) { if (ruleBook["UNTIL"].StartsWith("4500")) { log.Warn("Outlook can't handle end dates this far in the future. Converting to no end date."); oPattern.NoEndDate = true; } else { oPattern.PatternEndDate = DateTime.ParseExact(ruleBook["UNTIL"].ToString().Substring(0, 8), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture).Date; } } if (!ruleBook.ContainsKey("COUNT") && !ruleBook.ContainsKey("UNTIL")) { oPattern.NoEndDate = true; } #endregion }
private static List<String> getByDay(OlDaysOfWeek dowMask) { log.Fine("DayOfWeekMask = " + dowMask); List<String> byDay = new List<String>(); byDay.Add(((dowMask & OlDaysOfWeek.olMonday) != 0) ? "MO" : ""); byDay.Add(((dowMask & OlDaysOfWeek.olTuesday) != 0) ? "TU" : ""); byDay.Add(((dowMask & OlDaysOfWeek.olWednesday) != 0) ? "WE" : ""); byDay.Add(((dowMask & OlDaysOfWeek.olThursday) != 0) ? "TH" : ""); byDay.Add(((dowMask & OlDaysOfWeek.olFriday) != 0) ? "FR" : ""); byDay.Add(((dowMask & OlDaysOfWeek.olSaturday) != 0) ? "SA" : ""); byDay.Add(((dowMask & OlDaysOfWeek.olSunday) != 0) ? "SU" : ""); byDay = byDay.Where(s => !string.IsNullOrEmpty(s)).ToList(); return byDay; }
/// <summary> /// 获取一周中有几天。周日~周六分别对应0~6 /// </summary> /// <param name="dayOfWeek">OlDaysOfWeek类型</param> /// <returns>星期几的数组</returns> private int[] getWeekDays(OlDaysOfWeek dayOfWeek) { int nCount = 0; ArrayList List = new ArrayList(); if ((dayOfWeek & Outlook.OlDaysOfWeek.olSunday) == Outlook.OlDaysOfWeek.olSunday) { nCount++; List.Add(0); } if ((dayOfWeek & Outlook.OlDaysOfWeek.olMonday) == Outlook.OlDaysOfWeek.olMonday) { nCount++; List.Add(1); } if ((dayOfWeek & Outlook.OlDaysOfWeek.olTuesday) == Outlook.OlDaysOfWeek.olTuesday) { nCount++; List.Add(2); } if ((dayOfWeek & Outlook.OlDaysOfWeek.olWednesday) == Outlook.OlDaysOfWeek.olWednesday) { nCount++; List.Add(3); } if ((dayOfWeek & Outlook.OlDaysOfWeek.olThursday) == Outlook.OlDaysOfWeek.olThursday) { nCount++; List.Add(4); } if ((dayOfWeek & Outlook.OlDaysOfWeek.olFriday) == Outlook.OlDaysOfWeek.olFriday) { nCount++; List.Add(5); } if ((dayOfWeek & Outlook.OlDaysOfWeek.olSaturday) == Outlook.OlDaysOfWeek.olSaturday) { nCount++; List.Add(6); } Int32[] values2 = (Int32[])List.ToArray(typeof(Int32));//返回ArrayList包含的数组 return values2; }