【问题标题】:Checking if 2 dates passes the range of other 2 dates检查 2 个日期是否超出其他 2 个日期的范围
【发布时间】:2013-11-03 16:11:37
【问题描述】:

我有一个 WebApplication 可以将事件管理到像议程这样的表格中。 对于每个事件,我都有一个 StartDateEndDate

在应用程序中,我想将事件导出到图表中,并且我想检查事件是否超过了所需日期的范围。

例如: 活动一:开始日期(9 月 9 日)结束日期(9 月 14 日)

我想检查它是否通过(9 月 10 日 - 9 月 16 日)

这是事件示例图的照片:

这是只检查一个日期的代码:

public static bool Within(this DateTime current, DateTime startTime, DateTime endTime)
    {
        return startTime < currentTime < endTime;
    }

编辑: 为了澄清更多,如果事件超过 2 个日期范围,我希望函数返回 true, 即使它在范围之前开始或在范围之后结束,它也应该返回 true。

只有在不超过范围时才返回 false。

【问题讨论】:

标签: c# asp.net date


【解决方案1】:
public static bool Within(DateTime one, DateTime two,
                          DateTime lowBound, DateTime highBound)
{
    return one >= lowBound && two <= highBound;
}

【讨论】:

  • Within(new DateTime(2013, 9, 9), new DateTime(2013, 9, 14), new DateTime(2013, 9, 10), new DateTime(2013, 9, 16)) ;返回错误
  • @AnasNaim 没错,因为 09/09 不在 09/10(日/月)之内。
【解决方案2】:
public static bool Within(this DateTime current, DateTime startTime, DateTime endTime)
    {
        return startTime < currentTime && currentTime < endTime;
    }

然后调用两次

lowDate.Within(eventStart, eventEnd) && heDate.Within(eventStart, eventEnd)

【讨论】:

    【解决方案3】:

    通过这种方式得到答案:

    public static bool Within(DateTime StartDate, DateTime EndDate, DateTime StartRange, DateTime EndRange)
        {
            if ((StartDate == EndDate) && (StartRange <= StartDate && StartDate <= EndRange))
                return true;
            else
                return ((StartRange >= StartDate && StartRange <= EndDate) || (EndRange >= StartDate && EndRange <= EndDate));
        }
    

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多