需要开关建议

时间:2019-05-28 11:33:23

标签: c#

我有两个领域。第一个是时间选择器,我在其中保存轮班时间,第二个是组合框,其中我有轮班枚举。

班次类型为firstShift =早晨,secondShift =下午,thirdShift =午夜。所有班次都有startTime和endTime。

然后在开关i中写入时间间隔之间的值。

当我从组合框中选择下午班时,则在时间选择器中设置了下午班时间,这是正确的。

问题是当我选择早班时,即下午之前。如果选择早班,时间设置正确,但是第二次切换呼叫并设置午夜班。早班时间为06:00 AM-14:00 PM,午夜时间为10:00 PM-06:00 AM。

这是我用于按选定班次类型写时间的代码。

ListOfShifts = new ObservableCollection<EShifts>()
{
    new EShifts { 
        StartTime = new DateTime(currentDate.Year, currentDate.Month, currentDate.Day, 06, 00, 00), 
        EndTime = new DateTime(currentDate.Year, currentDate.Month, currentDate.Day, 14, 00, 00), 
        ShiftDesc = StringEnum<Shifts>.ToString(Shifts.PrvniSmena), 
        ShiftType = Shifts.PrvniSmena
    },
    new EShifts { 
        StartTime = new DateTime(currentDate.Year, currentDate.Month, currentDate.Day, 14, 00, 00), 
        EndTime = new DateTime(currentDate.Year, currentDate.Month, currentDate.Day, 22, 00, 00), 
        ShiftDesc = StringEnum<Shifts>.ToString(Shifts.DruhaSmena), 
        ShiftType = Shifts.DruhaSmena
    },
    new EShifts { 
        StartTime = new DateTime(currentDate.Year, currentDate.Month, currentDate.Day, 22, 00, 00), 
        EndTime = new DateTime(currentDate.Year, currentDate.Month, currentDate.Day, 06, 00, 00).AddDays(1), 
        ShiftDesc = StringEnum<Shifts>.ToString(Shifts.TretiSmena), 
        ShiftType = Shifts.TretiSmena
    }
};   

有一种代码可供即时选择的班次类型用于写时间

DateTime lastTime = Convert.ToDateTime(HourOfLoading);

if (HourOfLoading == null)
{
    lastTime = DateTime.Now;
}

if (selectedShift != null)
{
    // vyplnění času nakládky podle směn
    switch (selectedShift.ShiftType)
    {
        case Shifts.PrvniSmena:
            if (!(lastTime >= selectedShift.StartTime && lastTime < selectedShift.EndTime))
                HourOfLoading = selectedShift.StartTime.ToString("HH:mm");
            break;
        case Shifts.DruhaSmena:
            if (!(lastTime >= selectedShift.StartTime && lastTime < selectedShift.EndTime))
                HourOfLoading = selectedShift.StartTime.ToString("HH:mm");
            break;
        case Shifts.TretiSmena:
            if (!(lastTime >= selectedShift.StartTime && lastTime < selectedShift.EndTime))
                HourOfLoading = selectedShift.StartTime.ToString("HH:mm");
            break;
    }
}

我需要的结果是,当我在组合框中设置回早班时,然后显示从06:00开始的时间。

0 个答案:

没有答案