【发布时间】:2021-07-28 15:47:16
【问题描述】:
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 范围内
我如何知道一个时期是否在另一个时期之外?
【问题讨论】:
-
我建议使用这个库,它使这变得简单并保持您的代码可读:codeproject.com/Articles/168662/Time-Period-Library-for-NET
-
2022-13-18?那是什么时候? -
@JoelCoehoorn 我的意思是
2022-12-18 -
为什么这个问题被标记为重复,这是
date range compared to date range,而不是date range compared to datetime?
标签: c# datetime boolean-logic