可以通过以下代码实现比较两个 DateTime 的 TimeOfDay 是否有交叉:
DateTime dateTime1 = new DateTime(2021, 1, 1, 13, 0, 0);
DateTime dateTime2 = new DateTime(2021, 1, 1, 18, 0, 0);
DateTime dateTime3 = new DateTime(2021, 1, 1, 10, 0, 0);
DateTime dateTime4 = new DateTime(2021, 1, 1, 14, 0, 0);
bool isOverlap = (dateTime1.TimeOfDay < dateTime2.TimeOfDay)
? (dateTime1.TimeOfDay <= dateTime4.TimeOfDay && dateTime3.TimeOfDay <= dateTime2.TimeOfDay)
: (dateTime3.TimeOfDay <= dateTime2.TimeOfDay && dateTime1.TimeOfDay <= dateTime4.TimeOfDay);
if (isOverlap)
{
// 有交叉
}
else
{
// 无交叉
}
其中,isOverlap 变量表示两个 DateTime 的 TimeOfDay 是否有交叉。首先判断 dateTime1 和 dateTime2 哪一个时间较早(即 dateTime1.TimeOfDay < dateTime2.TimeOfDay),然后分别对两种情况进行比较。最终判断两个时间是否有交叉。