【发布时间】:2017-06-28 17:55:39
【问题描述】:
我正在使用算法编写调度程序。在算法的最后阶段,我需要查看时间表(创建的时间表),看看学生当时是否已经被分配到一个班级。
因此,我们有:
Current Class Start Time: (2017, 02, 09, 10, 00, 00)
Current Class Finish Time: (2017, 02, 09, 11, 00, 00)
此时我们将搜索时间表,看看学生 A 被分配到哪些其他班级:
例如,假设他们已经分配到同一日期:
Class 'Z' Start Time: (2017, 02, 09, 09, 00, 00)
Class 'Z' Finish Time: (2017, 02, 09, 12, 00, 00)
现在我想找到 Class 'Z' 的时间范围,并将其与 Current Class 的时间范围进行比较。
DateTime startClassZ = new DateTime(2017, 02, 09, 09, 00, 00);
DateTime endClassZ = new DateTime(2017, 02, 09, 12, 00, 00);
DateTime StartCurrent = new DateTime(2017, 02, 09, 10, 00, 00);
DateTime StartCurrent = new DateTime(2017, 02, 09, 11, 00, 00);
if (They do not clash)
{
Assign
}
if (Clash)
{
Select Another Student
}
谁能帮我解决我的“IF 语句”以及如何解决这个问题。
按照我的想法,有三种可能:
- 如果“当前班级”(开始和结束时间)介于“Z 级”(冲突 1)之间
- 如果“当前班级”的“开始时间”落在“Z 班”之间(冲突 2)
- 如果“当前班级”的“结束时间”落在“Z 班”之间(冲突 3)
谢谢
【问题讨论】:
-
“按照我的想法,有三种可能性”您是否尝试过实现它并看看会发生什么?你已经尝试过什么? stackoverflow.com/help/how-to-ask
-
有超过 3 种可能性,因为类的长度不尽相同。所以你有四个变量:开始A,结束A,开始B,结束B。组合是:1)A在B开始之前开始和结束2)A在B之前开始并且在B之前结束3)A在B之前开始并且在之后结束B 4) A 在 B 之后开始,在 B 结束之前结束 5) A 在 B 之后开始,在 B 之后结束 6) A 在 B 结束之后开始
-
否,因为我想知道是否有一个解决方案,我可以使用例如变量09:00:00 到 12:00:00 然后我可以使用 if 语句来查看开始时间结束时间或新变量(10:00:00 到 11:00:00)是否会落在 Z 类变量( 09:00:00 至 12:00:00)
-
@jdweng 你是对的,有第 4 种可能性:如果当前课程持续时间长于 Z 课程
-
Tim :我在回答中涵盖了所有 6 种可能的组合。你不能只看课程的长度。您的 if/else 语句必须涵盖所有 6 种情况。
标签: c# .net winforms datetime timespan