При обработке ввода данных мониторинга в реальном времени вам необходимо предоставить информацию о текущей смене {большая дневная смена, небольшая ночная смена, большая ночная смена}. Информация о смене задается на основе заданного периода времени, аналогично {{"8). :00", "16:00"} ,{"16:00","00:00"},{"00:00","8:00"}}
Решение
· Сравните текущее время, время начала и окончания проверки конверсии.
Связанный код
просмотреть обычную копию в буфер обмена, распечатать?
/**
* Тест периода времени
* @author ВанЯньЧенг
* @ версия 20 ноября 2009 г.
*/
общественный класс CalendarTimeSubsectionTest {
/**
* Тестовый вход
* @param args списки аргументов
*/
public static void main(String[] args) {
CalendarTimeSubsectionTest ctstObj = новый CalendarTimeSubsectionTest ();
int resultFlag = ctstObj.doGetShift("");
System.out.println(resultFlag);
}
/**
* Проверьте, находится ли определенное время в определенном периоде времени
* @param currTime определенное время
* @param timeSlot определенный период времени
* @return true/false
*/
public boolean isShift(final long currTime, String[] timeSlot) {
Календарь tempCalendar = Calendar.getInstance();
tempCalendar.setTimeInMillis(currTime);
String[] tmpArray = timeSlot[0].split(":");
долгое время начала, время остановки;
tempCalendar.clear(Calendar.HOUR_OF_DAY);
tempCalendar.clear(Календарь.МИНУТА);
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]);
если (stopHour == 0) {
tempCalendar.add(Calendar.DAY_OF_MONTH, 1);
}
tempCalendar.clear(Calendar.HOUR_OF_DAY);
tempCalendar.clear(Календарь.МИНУТА);
tempCalendar.set(Calendar.HOUR_OF_DAY, stopHour);
tempCalendar.set(Календарь.МИНУТА, стопМинута);
stopTime = tempCalendar.getTimeInMillis();
return ((startTime <currTime && currTime <= stopTime)? true: false);
}
/**
*Расчет смены
* Принадлежность @param orgCode
* @return result {1:большая ночь;2:дневная смена;3:маленькая ночная смена;4:ночная смена;0:особый режим}
*/
public int doGetShift (String orgCode) {
интервал результата = 0;
Календарь currCalen = Calendar.getInstance();
long currTime = currCalen.getTimeInMillis();
if (isShift(currTime, timeSubsection[2])) {
результат = 1;
} else if (isShift(currTime, timeSubsection[0])) {
результат = 2;
} else if (isShift(currTime, timeSubsection[1])) {
результат = 3;
}
вернуть результат;
}
//Период времени 0: дневная смена 1: маленькая ночная смена 2: большая ночная смена*/
Private static String[][] timeSubsection = {{"8:00", "16:00"}, {"16:00", "00:00"}, {"00:00", "08:00" }};
/**
* Форматирование даты
* Экземпляр даты @paramcalenObj
* @param formatStr строка формата
* @return result формат завершенной строки
*/
public String doParseDate (Календарь CalenObj, String formatStr) {
DateFormat df = новый SimpleDateFormat (formatStr);
Строковый результат = ноль;
результат = df.format(calenObj.getTime());
вернуть результат;
}