public static bool IsRRuleWeekOnDay(TickRRule rule) { IList<IWeekDay> nums = rule.GetByDay(); if (nums == null || nums.Count <= 0) { return false; } IList<int> byMonthDay = rule.GetByMonthDay(); return byMonthDay == null || byMonthDay.Count == 0; }
public int GetRepeatSelectedValue() { int checkPosition = 0; var repeatFlag = Tasks.RepeatFlag; if (string.IsNullOrEmpty(repeatFlag)) { return checkPosition; } TickRRule rRule = new TickRRule(repeatFlag); var freq = rRule.GetFreq(); switch (freq) { case FrequencyType.Daily: checkPosition = Constants.Repeats.REPEATS_DAILY; break; //case FrequencyType.Hourly: // checkPosition = Constants.Repeats.REPEATS_DAILY; // break; //case FrequencyType.Minutely: // checkPosition = Constants.Repeats.REPEATS_DAILY; // break; case FrequencyType.Monthly: bool onByWeekDay = DateTimeUtils.IsRRuleWeekOnDay(rRule); if (rRule.GetByMonthDay().Count > 0) { return checkPosition; } checkPosition = onByWeekDay ? Constants.Repeats.REPEATS_MONTHLY_ON_DAY_COUNT : Constants.Repeats.REPEATS_MONTHLY_ON_DAY; break; //case FrequencyType.None: // checkPosition = Constants.Repeats.REPEATS_DAILY; // break; //case FrequencyType.Secondly: // checkPosition = Constants.Repeats.REPEATS_DAILY; // break; case FrequencyType.Weekly: IList<IWeekDay> weekdayNums = rRule.GetByDay(); bool isWeekDays = DateTimeUtils.IsRRuleWeekdays(weekdayNums); if (isWeekDays) { checkPosition = Constants.Repeats.REPEATS_EVERY_WEEKDAY; } else if (weekdayNums.Count <= 1) { checkPosition = Constants.Repeats.REPEATS_WEEKLY_ON_DAY; } break; case FrequencyType.Yearly: if (rRule.IsLunarFrequency()) { // TODO 暂时不实现 //if (isChinese) //{ // checkPosition = 7; //} } else { checkPosition = 6; } break; default: break; } return checkPosition; }