0

最近问了这个问题,获取日期时间对象列表并解析:

  1. Weekly Recurrence:与同一 dayOfWeek、小时、分钟匹配的日期集合,以获取一组列表,其中列表中的每个项目都与该 Key 匹配其中:

    键是 DayOfWeek + 小时 + 分钟的串联

  2. Monthly Recurrence:与同一 weekOfMonth、dayOfWeek、hour、minute 匹配的日期集合,以获取一组列表,其中列表中的每个项目都与该 Key 匹配其中:

    键是 WeekOfMonth + DayOfWeek + 小时 + 分钟的串联

这两个都很好。

现在我有一个额外的要求,我正在努力支持双周重复(每隔一周)。我正在尝试找出与之匹配的正确密钥,因为上面的其他两个用例都有逻辑计算密钥,但无法每隔一周计算一次算法/密钥

4

1 回答 1

4

您需要计算出相关日期的周数。

例如:

var dt = new DateTime(...); // your datetime
var cal = new System.Globalization.GregorianCalendar();
var weekNum = cal.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);

计算一年中的周数有不同的策略,您可以使用 a 指定CalendarWeekRule并对应DayOfWeek一周的开始日。你可以在这里阅读更多。

一旦你有了一个星期数,你可以做一些数学运算来使它“每两周一次”:

int biweeklyKey = weekNum % 2;

该值将是 0 或 1,您可以将其用作算法中的键。

于 2013-06-26T21:17:55.367 回答