我有两个领域。第一个是时间选择器,我在其中保存轮班时间,第二个是组合框,其中我有轮班枚举。
班次类型为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开始的时间。