我在查找下面一天中的最后一次(这是最大的时间)图片时遇到问题,如何获得该时间? 我必须将此时间与他的班次进行比较,但是当我这样做时,我总是第一次阅读。
这是我的代码:
foreach (var shift in shifts)
{
if (von.ZPZ_Von <= shift.Arbeitsbeginn.AddMinutes(-20) &&
bis.ZPZ_Bis >= shift.Arbetsende.AddMinutes(-10))
return null;
else if (von.ZPZ_Von >= shift.Arbeitsbeginn.AddMinutes(20) &&
bis.ZPZ_Bis >= shift.Arbetsende.AddMinutes(10))
return null;
else if (von.ZPZ_Von <= shift.Arbeitsbeginn.AddMinutes(5)
&& bis.ZPZ_Bis <= shift.Arbetsende.AddMinutes(10)
)
return shift;
}
这是一种找到工作人员轮班的方法,如果工人在正确的轮班中返回班次,则如果该工人来20分钟或工作超过10分钟,则返回null。
这看起来像是一天的数据:
因此,我需要将ZPZ_Bis与最后一个时间进行比较。 此刻,我的方法始终将ZPZ_Bis与第一个出发时间i相比较。 1899-12-30 09:52:00.000在这种情况下。
如果有人可以帮助我解决这个问题,我将不胜感激,我最近几天还不知道该如何处理。
这是我的整个方法:
private A_Arbeitszeitplan DetectShift(List<A_Arbeitszeitplan> shifts, PRAESENZZEIT von, PRAESENZZEIT bis, List<PRAESENZZEIT>arrivals)
{
var lastTime = arrivals.Where(x=>x.ZPZ_Bis.)
foreach (var shift in shifts)
{
if (von.ZPZ_Von <= shift.Arbeitsbeginn.AddMinutes(-20) &&
bis.ZPZ_Bis >= shift.Arbetsende.AddMinutes(-10))
return null;
else if (von.ZPZ_Von >= shift.Arbeitsbeginn.AddMinutes(20) &&
bis.ZPZ_Bis >= shift.Arbetsende.AddMinutes(10))
return null;
else if (von.ZPZ_Von <= shift.Arbeitsbeginn.AddMinutes(5)
&& bis.ZPZ_Bis <= shift.Arbetsende.AddMinutes(10)
)
return shift;
}
foreach (var shift in shifts)
{
if (von.ZPZ_Von <= shift.Arbeitsbeginn.AddMinutes(5))
return shift;
}
return null;
}
答案 0 :(得分:1)
如果您只想使用TimeSpan
中的DateTime
,则可以这样获得:
在DateTime中,您可以使用.TimeOfDay-但这会给您一个 TimeSpan代表一天中的时间(10小时)。
当然,您需要将TimeSpans相互比较:
if (von.ZPZ_Von.TimeOfDay <= shift.Arbeitsbeginn.AddMinutes(-20).TimeOfDay &&
bis.ZPZ_Bis.TimeOfDay >= shift.Arbetsende.AddMinutes(-10).TimeOfDay)
return null;