Al procesar la entrada de datos de monitoreo en tiempo real, debe proporcionar la información del turno actual {turno diurno grande, turno nocturno pequeño, turno nocturno grande}. La información del turno se establece en función de un período de tiempo determinado, similar a {{"8}. :00", "16:00"},{"16:00","00:00"},{"00:00","8:00"}}
Solución
· Compara la hora actual, la hora de inicio y finalización de la verificación de conversión.
Código relacionado
¿Ver copia simple en el portapapeles?
/**
* Prueba de período de tiempo
* @autor WangYanCheng
* @versión 2009-11-20
*/
clase pública CalendarTimeSubsectionTest {
/**
* Entrada de prueba
* Listas de argumentos @param args
*/
público estático vacío principal (String [] argumentos) {
CalendarTimeSubsectionTest ctstObj = nuevo CalendarTimeSubsectionTest();
int resultFlag = ctstObj.doGetShift("");
System.out.println(resultadoFlag);
}
/**
* Verificar si un tiempo determinado está en un período de tiempo determinado
* @param currTime un tiempo determinado
* @param timeSlot un período de tiempo determinado
* @return verdadero/falso
*/
public boolean isShift(final long currTime, String[] timeSlot) {
Calendario tempCalendar = Calendar.getInstance();
tempCalendar.setTimeInMillis(currTime);
String[] tmpArray = timeSlot[0].split(":");
hora de inicio larga, hora de parada;
tempCalendar.clear(Calendario.HOUR_OF_DAY);
tempCalendar.clear(Calendario.MINUTO);
tempCalendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(tmpArray[0]));
tempCalendar.set(Calendario.MINUTO, Integer.parseInt(tmpArray[1]));
horaInicio = tempCalendar.getTimeInMillis();
tmpArray = timeSlot[1].split(":");
int stopHour = Integer.parseInt(tmpArray[0]), stopMinute = Integer.parseInt(tmpArray[1]);
if (horadeparada == 0) {
tempCalendar.add(Calendario.DAY_OF_MONTH, 1);
}
tempCalendar.clear(Calendario.HOUR_OF_DAY);
tempCalendar.clear(Calendario.MINUTO);
tempCalendar.set(Calendar.HOUR_OF_DAY, stopHour);
tempCalendar.set(Calendario.MINUTO, stopMinute);
stopTime = tempCalendar.getTimeInMillis();
return ((startTime < currTime && currTime <= stopTime)? Verdadero: falso);
}
/**
*Cálculo de turno
* Afiliación @param orgCode
* @return resultado {1:gran noche;2:turno de día;3:noche pequeña;4:turno de noche;0:tratamiento especial}
*/
public int doGetShift(String orgCode) {
resultado entero = 0;
Calendario currCalen = Calendar.getInstance();
long currTime = currCalen.getTimeInMillis();
if (isShift(currTime, timeSubsection[2])) {
resultado = 1;
} else if (isShift(currTime, timeSubsection[0])) {
resultado = 2;
} else if (isShift(currTime, timeSubsection[1])) {
resultado = 3;
}
resultado de devolución;
}
//Período de tiempo 0: turno de día; 1: turno de noche pequeño 2: turno de noche grande*/
Cadena estática privada[][] timeSubsection = {{"8:00", "16:00"}, {"16:00", "00:00"}, {"00:00", "08:00" }};
/**
* Formato de fecha
* @param calenObj instancia de fecha
* @param formatStr cadena de formato
* @return formato de resultado cadena completada
*/
cadena pública doParseDate (calendario calenObj, cadena formatStr) {
DateFormat df = nuevo SimpleDateFormat(formatStr);
Resultado de cadena = nulo;
resultado = df.format(calenObj.getTime());
resultado de devolución;
}