gpt4 book ai didi

c# - 在 C# 中使用 DateTime 计算事件的重复发生

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:22 25 4
gpt4 key购买 nike

我有一组重复发生的事件。我需要能够计算出这些事件在接下来的 5 周左右发生的时间。

该系统将通知用户在本月内,这些事件将发生..

例如:

事件 1

  • 开始日期 = 2011 年 12 月 19 日星期一
  • 重复模式 = 星期一/每两周

事件 2

  • 开始日期 = 2012 年 2 月 3 日星期四
  • 重复模式 = 周四/每三周

现在是 3 月 22 日 - 在接下来的 5 周内,事件 1 和 2 将在什么日期举行。

如果能够检测到是否是圣诞节,那么该事件将在另一天发生,这也很有用。

我正在使用 .NET MVC2,但我想这是偶然的。

感谢您的帮助

最佳答案

像这样的东西应该可以解决问题:

//enum for various patterns
public enum OccurrenceRate
{
Weekly,
Fortnightly,
Monthly
}

public static List<DateTime> GetOccurrences(DateTime startDate, DateTime endDate, OccurrenceRate rate)
{
List<DateTime> occurrences = new List<DateTime>();

var nextDate = startDate;

while (true)
{
if (nextDate <= endDate)
{
occurrences.Add(nextDate);
}
else
{
break;
}

switch (rate)
{
case OccurrenceRate.Weekly:
{
nextDate = nextDate.AddDays(7);
break;
}
case OccurrenceRate.Fortnightly:
{
nextDate = nextDate.AddDays(14);
break;
}
case OccurrenceRate.Monthly:
{
nextDate = nextDate.AddMonths(1);
break;
}
}
}

return occurrences;
}

调用代码示例:

DateTime startDate = DateTime.Now;
DateTime endDate = startDate.AddDays(35); //5 weeks

var dates = GetOccurrences(startDate, startDate.AddDays(35), OccurrenceRate.Weekly);
dates.ForEach(date =>
{
Console.WriteLine("{0:yyyy-MM-dd}", date);
});

关于c# - 在 C# 中使用 DateTime 计算事件的重复发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9821511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com