提问人:lunisolar 提问时间:7/28/2021 最后编辑:lunisolar 更新时间:7/28/2021 访问量:525
如何在 C# 中比较两个期间日期?[复制]
How to compare two period dates in C#? [duplicate]
问:
class Period {
public DateTime Start { get; set; }
public DateTime End { get; set; }
}
我在比较两个 Period 对象的布尔逻辑方面遇到困难
假设在 DB 中,我有以下 Period 对象。
var periodInDb = new Period {
Start = DateTime.ParseExact("2022-12-18", "yyyy-MM-dd", CultureInfo.InvariantCulture);
End = DateTime.ParseExact("2023-01-11", "yyyy-MM-dd", CultureInfo.InvariantCulture);
};
我只想添加一个新句点,如果它不在上述句点之间。
我已经在纸上写下了一些可能会添加的场景日期,我可能错过了一些场景:
开课时间:2022/12/18
结束时间:2023/01/11
一些方案日期:
开始时间:2022/12/19 ✔️
结束时间:2023/01/10 ❌
❌ 不要添加,因为介于------------------
end date
2022/12/18 - 2023/01/11
开课时间:2022/12/19 ✔️
结束时间:2023/01/12 ✔️
❌ 不要添加,因为介于------------------
start date
2022/12/18 - 2023/01/11
开课时间:2022/12/17 ✔️
结束时间:2023/01/12 ✔️
❌ 不要添加,因为部分内容不在------------------
start date and end date
2022/12/18 - 2023/01/11
开课时间:2022/12/16 ✔️
结束时间:2023/12/17 ✔️
✔️ 添加,因为不在------------------
start date and end date
2022/12/18 - 2023/01/11
我如何知道一个时期是否属于另一个时期?
答:
2赞
Joel Coehoorn
7/28/2021
#1
public bool HasOverlap(Period p1, Period p2)
{
return p1.End >= p2.Start && p1.Start <= p2.End;
}
评论
0赞
Rafalon
7/29/2021
这。请注意,根据 OP 的规格,不等式可能很严格,但这里的逻辑很好
评论
2022-13-18
?那是什么时候?2022-12-18
date range compared to date range
date range compared to datetime