Ao processar a entrada em tempo real de dados de monitoramento, você precisa fornecer as informações do turno atual {grande turno diurno, pequeno turno noturno, grande turno noturno}. As informações do turno são definidas com base em um determinado período de tempo, semelhante a {{"8}. :00", "16:00"} ,{"16:00","00:00"},{"00:00","8:00"}}
Solução
· Compare a hora atual, a hora de início e término da verificação de conversão.
Código relacionado
visualizar cópia simples para impressão da área de transferência?
/**
* Teste de período de tempo
* @autor WangYanCheng
* @versão 20/11/2009
*/
classe pública CalendarTimeSubsectionTest {
/**
* Entrada de teste
* @param listas de argumentos args
*/
public static void main(String[] args) {
CalendarTimeSubsectionTest ctstObj = new CalendarTimeSubsectionTest();
int resultFlag = ctstObj.doGetShift("");
System.out.println(resultFlag);
}
/**
* Verifique se um determinado horário está em um determinado período de tempo
* @param currTime um determinado horário
* @param timeSlot um determinado período de tempo
* @return verdadeiro/falso
*/
public boolean isShift(final longo currTime, String[] timeSlot) {
Calendário tempCalendar = Calendar.getInstance();
tempCalendar.setTimeInMillis(currTime);
String[] tmpArray = timeSlot[0].split(":");
startTime longo, stopTime;
tempCalendar.clear(Calendário.HOUR_OF_DAY);
tempCalendar.clear(Calendário.MINUTE);
tempCalendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(tmpArray[0]));
tempCalendar.set(Calendar.MINUTE, Integer.parseInt(tmpArray[1]));
startTime = tempCalendar.getTimeInMillis();
tmpArray = timeSlot[1].split(":");
int stopHour = Integer.parseInt(tmpArray[0]), stopMinute = Integer.parseInt(tmpArray[1]);
if (stopHora == 0) {
tempCalendar.add(Calendário.DAY_OF_MONTH, 1);
}
tempCalendar.clear(Calendário.HOUR_OF_DAY);
tempCalendar.clear(Calendário.MINUTE);
tempCalendar.set(Calendário.HOUR_OF_DAY, stopHour);
tempCalendar.set(Calendário.MINUTE, stopMinute);
stopTime = tempCalendar.getTimeInMillis();
return ((startTime <currTime && currTime <= stopTime) ? verdadeiro: falso);
}
/**
*Cálculo de turno
* @param afiliação orgCode
* @return resultado {1:noite grande;2:turno diurno;3:noite pequena;4:turno noturno;0:tratamento especial}
*/
public int doGetShift(String orgCode) {
resultado interno = 0;
Calendário currCalen = Calendar.getInstance();
currTime longo = 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 retorno;
}
//Período 0: turno diurno; 1: pequeno turno noturno; 2: grande turno noturno*/
String estática privada[][] timeSubsection = {{"8:00", "16:00"}, {"16:00", "00:00"}, {"00:00", "08:00" }};
/**
* Formatação de data
* @param instância de data calenObj
* @param formatStr string de formato
* @return formato de resultado string concluída
*/
public String doParseDate(Calendário calenObj, String formatStr) {
DateFormat df = new SimpleDateFormat(formatStr);
Resultado da string = nulo;
resultado = df.format(calenObj.getTime());
resultado de retorno;
}