检查datetime实例是否属于其他两个datetime对象

Dee*_*ons 53 c# asp.net datetime timespan

我想知道一个简单的算法来检查给定的实例是否datetime位于另外两个实例之间C#.

注意:

我浏览了这个如何检查给定的日期时间对象是否在两个日期时间之间?这是为python和更多的PHP.大多数其他问题都是关于两者之间的差异.

细节:

我比较具体的时间,日期对我来说无关紧要.例如,我得到了DataBase10:00Am- 9:00Pm和我之间工作的工作人员的入职[例如]想知道在给定时间哪些工作人员在课堂上工作2:00 Pm.现在,这将返回我此时参与的员工详细信息.

Jas*_*omb 84

DateTime.Ticks将占用时间.在DateTime上使用.Ticks将日期转换为long.然后只需使用简单的if stmt来查看您的目标日期是否介于两者之间.

// Assuming you know d2 > d1
if (targetDt.Ticks > d1.Ticks && targetDt.Ticks < d2.Ticks)
{
    // targetDt is in between d1 and d2
}  
Run Code Online (Sandbox Code Playgroud)

  • -1这是一个更加模糊的方法来得到错误的答案 - 它是`targetDt <d1`,只是更乱. (11认同)
  • 这是正确的答案吗?DateTime.Ticks是表示此实例的日期和时间的刻度数.该值介于DateTime.MinValue.Ticks和DateTime.MaxValue.Ticks之间.因此,您将比较完整日期而不是时间. (6认同)
  • 它会起作用,因为“DateTime”在内部是一个简单的数字。当您解析它时,它会转换为该数字。DateTime 的每个实例都是具有不同值的数字。但您也可以比较 DateTime,因为它实现了“IComparable”接口。只需删除此答案中的所有勾号即可。 (2认同)

Vik*_*iaR 48

做简单比较>和<.

if (dateA>dateB && dateA<dateC)
    //do something
Run Code Online (Sandbox Code Playgroud)

如果您只关心时间:

if (dateA.TimeOfDay>dateB.TimeOfDay && dateA.TimeOfDay<dateC.TimeOfDay)
    //do something
Run Code Online (Sandbox Code Playgroud)

  • 它的工作原理是没有夜班工人.但如果B = 11PM且C = 5AM ...... ......关于这是否会发生的问题尚不清楚. (2认同)

小智 9

给自己写一个辅助函数:

public static bool IsBewteenTwoDates(this DateTime dt, DateTime start, DateTime end)
{
    return dt >= start && dt <= end;
}
Run Code Online (Sandbox Code Playgroud)

然后调用: .IsBewteenTwoDates(DateTime.Today ,new DateTime(,,));