检查范围内是否有任何日期在指定月份内

本文关键字:日期 范围内 是否 任何 检查 | 更新日期: 2023-09-27 18:31:32

我对最佳方法有点茫然。 假设我有以下内容:

//Get the first and last day of the month -- ex February
int month = DateTime.ParseExact("February", "MMMM", new CultureInfo("en-US")).Month;
var now = DateTime.Now;
var firstOfMonth = new DateTime(now.Year, month, 1);
var lastOfMonth = new DateTime(now.Year, month, DateTime.DaysInMonth(now.Year, month));
var coverageStartDate = new DateTime(now.Year, 1, 1);
var coverageEndDate = new DateTime(now.Year, 2, 15);

我正在尝试创建一个检查,以查看覆盖范围开始日期和覆盖范围结束日期的日期范围是否在 2 月份。 请记住,这些值也可能如下所示:

var coverageStartDate = new DateTime(now.Year, 2, 3);
var coverageEndDate = new DateTime(now.Year, 2, 10);

只要覆盖范围开始/结束日期范围内有一个日期落在 2 月份,我就想返回 true。

检查范围内是否有任何日期在指定月份内

有了DateTime,您可以使用>=,<=等。

采用您的代码,我会做这样的事情:

var firstOfMonth = new DateTime(now.Year, month, 1, 0, 0, 0);
var lastOfMonth = new DateTime(now.Year, month, DateTime.DaysInMonth(now.Year, month), 23, 59, 59);
var coverageStartDate = new DateTime(now.Year, 1, 1);
var coverageEndDate = new DateTime(now.Year, 2, 15);
if(coverageStartDate <= lastOfMonth && coverageEndDate >= firstOfMonth)
{
  // Do something
}

此代码不要求年份必须相同,因此覆盖时间可以跨越多年。