【发布时间】:2018-06-18 05:15:34
【问题描述】:
我正在为我的大学编写课程安排程序,但在 C# 中进行比较时遇到了一些问题。对于每门课程,给定的日期时间都是这样的字符串格式:
string Start_Time = "10:00";
string End_Time = "10:50";
我需要将这些转换为 DateTime 格式(最好限制为 HH:mm),然后进行比较以确保课程之间没有重叠。我当前要检查的代码如下所示。
static bool checkTimes(Courses courseOne, Courses courseTwo)
{
bool overlapChecker = false;
// Get comparison values for course times
DateTime s1 = Convert.ToDateTime(courseOne.Start_Time);
DateTime s2 = Convert.ToDateTime(courseTwo.Start_Time);
DateTime e1 = Convert.ToDateTime(courseOne.End_Time);
DateTime e2 = Convert.ToDateTime(courseTwo.End_Time);
// Check for overlapping days of the week
foreach (char c1_days in courseOne.Days)
{
foreach (char c2_days in courseTwo.Days)
{
if (c1_days == c2_days)
{
overlapChecker = true;
}
}
}
// If there are any overlapping days, compare DateTimes of courses for overlap
if (overlapChecker == true)
{
// Compare all possibilities of time overlap
if ((s2 >= s1 && s2 <= e1) || (e1 >= s1 && e1 <= e2))
{
return true;
}
}
return false;
}
目前,这不起作用。我不太确定我哪里出错了,但任何帮助都会非常感激。谢谢!
【问题讨论】:
-
s1的值是多少?s2?e1?e2?overlapChecker? 别猜了,跑起来看看。 -
您能添加课程类定义以及您如何调用 checkTimes 吗?
-
如果可能,还添加
Courses类和一些实例来玩。肯定会帮助其他人准确轻松地找出代码。 -
你可以用这个替换
overlapCheckerforeach 循环:var overlapChecker = courseOne.Days.Any(d => courseTwo.Days.Contains(d))
标签: c# datetime boolean comparison overlap