检查当前时间是否在 C# 中不同日期的范围内
Check if the current time fall in range with different date in C#
我想查看属于两个不同日期的时间。
假设我需要从今天 10:30pm 到明天早上 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);
仍然没有运气。
您可以使用 TimeOfDay property 并改用它。所以你的代码应该是这样的
if (now.TimeOfDay > NightShiftStart || now.TimeOfDay < NightShiftEnd ){}
编辑: 虽然上面的代码可以满足您的要求,但这种方式更通用一些,适用于各种轮班,只要您知道他们什么时候开始和结束:
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))
{
// ...
}
通常您应该使用 >= 或 <= 来比较 ShiftStart 或 ShiftEnd,因为您希望确切的时间也属于您的班次之一。
试试这个,这是一个简单但有效的方法:
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;
}
我想查看属于两个不同日期的时间。 假设我需要从今天 10:30pm 到明天早上 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);
仍然没有运气。
您可以使用 TimeOfDay property 并改用它。所以你的代码应该是这样的
if (now.TimeOfDay > NightShiftStart || now.TimeOfDay < NightShiftEnd ){}
编辑: 虽然上面的代码可以满足您的要求,但这种方式更通用一些,适用于各种轮班,只要您知道他们什么时候开始和结束:
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))
{
// ...
}
通常您应该使用 >= 或 <= 来比较 ShiftStart 或 ShiftEnd,因为您希望确切的时间也属于您的班次之一。
试试这个,这是一个简单但有效的方法:
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;
}