0

我在下面的图片中查找一天中的最后一个时间(最大的时间)时遇到问题,我怎样才能得到那个时间?我必须将这次与他的轮班进行比较,但是当我这样做时,我总是第一次阅读。

这是我的代码:

 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 与第一个出发时间进行比较,即。1899-12-30 09:52:00.000 在这种情况下。

如果有人可以帮助我解决这个问题,我将不胜感激,在过去的几天里,我真的不知道如何处理这个问题。

这是我的整个方法:

 private A_Arbeitszeitplan DetectShift(List<A_Arbeitszeitplan> shifts, PRAESENZZEIT von, PRAESENZZEIT bis, List<PRAESENZZEIT>arrivals)
4

1 回答 1

1

如果你只想使用你的TimeSpanDateTime你可以像这样得到它:

从 DateTime 中,您可以使用 .TimeOfDay - 但这会给您一个 TimeSpan 表示一天中的时间(10 小时)。

当然,您需要将 TimeSpan 相互比较:

if (von.ZPZ_Von.TimeOfDay <= shift.Arbeitsbeginn.AddMinutes(-20).TimeOfDay &&
            bis.ZPZ_Bis.TimeOfDay >= shift.Arbetsende.AddMinutes(-10).TimeOfDay)
            return null;
于 2018-08-31T07:46:02.893 回答