检查当前时间是否在C#

时间:2017-01-05 17:51:35

标签: c# datetime timespan

我想查看分为两个不同日期的时间。 假设我需要从今天晚上10:30到明天早上7点检查。

TimeSpan NightShiftStart = new TimeSpan(22, 30, 0);//10:30pm 
TimeSpan NightShiftEnd = new TimeSpan(7, 0, 0); //7am

并比较

if ((now > NightShiftStart ) && (now < NightShiftEnd )){}

timespan不会在这方面工作我也试过

DateTime t1 = DateTime.Today.AddHours(22);
DateTime t2 = DateTime.Today.AddDays(1).AddHours(7);

仍然没有运气。

2 个答案:

答案 0 :(得分:1)

您可以使用TimeOfDay property并使用它。所以你的代码看起来应该是这样的

if (now.TimeOfDay > NightShiftStart || now.TimeOfDay < NightShiftEnd ){}

编辑:虽然上面的代码适合您的要求,但这种方式更通用,适用于各种班次,只要您知道它们的开始和结束时间:< / p>

TimeSpan ShiftStart = new TimeSpan(22, 30, 0);//10:30pm 
TimeSpan ShiftEnd = new TimeSpan(7, 0, 0); //7am

if ((ShiftStart > ShiftEnd && (now.TimeOfDay > ShiftStart || now.TimeOfDay < ShiftEnd))
   || (now.TimeOfDay > ShiftStart && now.TimeOfDay < ShiftEnd))
{
    // ...
}

通常你应该使用&gt; =或&lt; =来比较ShiftStart或ShiftEnd,因为你希望确切的时间也属于你的一个班次。

答案 1 :(得分:0)

试试这个,这是一个简单但有效的方法:

private bool CheckIfTimeIsBetweenShift(DateTime time)
{
    var NightShiftStart = new TimeSpan(22, 30, 0); 
    var NightShiftEnd = new TimeSpan(7, 0, 0);

    return NightShiftStart <= time.TimeOfDay && time.TimeOfDay >= NightShiftEnd;
}