首先我检查了这个解决方案:
并尝试比较像该解决方案那样的时间跨度
public Boolean CalculateDalUren(DateTime datum, TimeSpan? dalStart, TimeSpan? dalEnd)
{
Boolean isDal = false;
TimeSpan timeBetween = datum.TimeOfDay;
if ((timeBetween >= dalStart))&&(timeBetween < dalEnd)
{
isDal = true;
}
}
return isDal;
}
Run Code Online (Sandbox Code Playgroud)
请注意,dalStart要么是 21:00,要么dalEnd是 23:00,而且几乎总是 07:00。我将 转换DateTime为Timespan.
现在,如果时间跨度例如是 23:00,那么时间会更大或相同,dalStart但因为(这是一个假设)时间更晚,那么dalEnd它仍然会将 if 语句视为 false。02:00 时反之亦然。那么不是更晚dalStart,而是更早dalEnd。
我想这是因为我的时间跨度是两天。当日 21:00 至次日 07:00。有解决方法吗?这样我就可以检查时间是否在 21:00 到第二天早上 07:00 之间。
小智 5
我认为这符合您的要求。
如果dalEnd小于dalStart,则应该是第二天的TimeSpan。
public Boolean CalculateDalUren(DateTime datum, TimeSpan? dalStart, TimeSpan? dalEnd)
{
Boolean isDal = false;
DateTime StartDate = DateTime.Today;
DateTime EndDate = DateTime.Today;
//Check whether the dalEnd is lesser than dalStart
if (dalStart >= dalEnd)
{
//Increase the date if dalEnd is timespan of the Nextday
EndDate = EndDate.AddDays(1);
}
//Assign the dalStart and dalEnd to the Dates
StartDate = StartDate.Date + dalStart.Value;
EndDate = EndDate.Date + dalEnd.Value;
if ((datum >= StartDate) && (datum <= EndDate))
{
isDal = true;
}
return isDal;
}
Run Code Online (Sandbox Code Playgroud)
尝试一下。
| 归档时间: |
|
| 查看次数: |
5407 次 |
| 最近记录: |