c#获取日期,通过循环添加到数据库

chenjianyong94 2018-08-13 02:39:27
如题:今天是2018.8.13是周一, 需要给学生 每周2,4,6,7排课表,周一到周末可以多选选择, c#需要获取对应周几对应的日期,获取日期后,根据学生报名30次课 按循环写入系统。
例如:学生报名10次课, 2018,8.13日报名, 系统需要按照每周2,每周4,每周五,给他排课,课表应该出来10个对应的日期,怎样获取对应的日期???求支招!!!(8.14,8.16,8.17,8.21,8.23等等)怎样获取这个日期
...全文
338 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenjianyong94 2018-08-14
  • 打赏
  • 举报
回复
例如:学生报名10次课, 2018,8.13日报名, 系统需要按照每周2,每周4,每周五,给他排课,课表应该出来10个对应的日期,怎样获取对应的日期???求支招!!!(8.14,8.16,8.17,8.21,8.23等等)怎样获取这个日期 ,怎样通过系统去计算
csdnFUCKINGSUCKS 2018-08-14
  • 打赏
  • 举报
回复

/// <summary>
/// 排课
/// </summary>
/// <param name="courseCount">报名课程数</param>
/// <param name="scheduleDays">排课日</param>
/// <param name="enrollDate">报名日期</param>
/// <returns></returns>
public static List<DateTime> GetSchedule(int courseCount, List<DayOfWeek> scheduleDays, DateTime? enrollDate = null)
{
if (enrollDate == null)
{
enrollDate = DateTime.Now;
}

//报名课程数和排课日得到需要上几周的课
var weeks = (courseCount / scheduleDays.Count) + (courseCount % scheduleDays.Count > 0 ? 1 : 0);
//得到天数
var days = weeks * 7;
List<DateTime> listDay = new List<DateTime>();
DateTime dtDay = new DateTime();
var endDay = enrollDate.Value.AddDays(days);
//报名日期和课程结束周的日期得到日期区间
for (dtDay = enrollDate.Value; dtDay.CompareTo(endDay) <= 0; dtDay = dtDay.AddDays(1))
{
listDay.Add(dtDay);
}
//返回日期区间里包含排课日的日期之后取得报名课程数的日期
return listDay.Where(d => scheduleDays.Contains(d.DayOfWeek)).Take(courseCount).ToList();
}

调用

var schedule = GetSchedule(10, new List<DayOfWeek>() { DayOfWeek.Tuesday, DayOfWeek.Thursday, DayOfWeek.Friday }, DateTime.Now.AddDays(-1));
正怒月神 版主 2018-08-13
  • 打赏
  • 举报
回复
其实我没太看懂题。。。
每周2,4,6,7排课表,
系统需要按照每周2,每周4,每周五,给他排课。
这个是矛盾吗?
而且一天可以排多少课?
  • 打赏
  • 举报
回复
        static IList<DateTime> GetDates(DateTime startDate, int count, IList<DayOfWeek> supportDays)
{
IList<DateTime> list = new List<DateTime>();
for (var i = 0; ; i++)
{
var tmpDate = startDate.AddDays(i);
if (supportDays.Contains(tmpDate.DayOfWeek))
{
list.Add(tmpDate);
}
if (list.Count >= count)
{
break;
}
}
return list;
}

调用方法
            foreach (var date in GetDates(DateTime.Now.Date, 10, new List<DayOfWeek> { DayOfWeek.Saturday, DayOfWeek.Thursday, DayOfWeek.Wednesday }))
{
Console.WriteLine(date.ToString("yyyy-MM-dd"));
}

supportDays注意自己调整,我没写成你要求的日期

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧