Bei der Verarbeitung der Echtzeiteingabe von Überwachungsdaten müssen Sie die aktuellen Schichtinformationen angeben {große Tagschicht, kleine Nachtschicht, große Nachtschicht}. Die Schichtinformationen werden basierend auf einem bestimmten Zeitraum festgelegt, ähnlich wie bei {{"8 :00", "16:00"} ,{"16:00","00:00"},{"00:00","8:00"}}
Lösung
· Vergleichen Sie die aktuelle Uhrzeit sowie die Start- und Endzeit der Konvertierungsüberprüfung.
Zugehöriger Code
Klartext in Zwischenablage anzeigen und drucken?
/**
* Zeitraumtest
* @Autor WangYanCheng
* @Version 20.11.2009
*/
öffentliche Klasse CalendarTimeSubsectionTest {
/**
* Testeingang
* @param args Argumentlisten
*/
public static void main(String[] args) {
CalendarTimeSubsectionTest ctstObj = new CalendarTimeSubsectionTest();
int resultFlag = ctstObj.doGetShift("");
System.out.println(resultFlag);
}
/**
* Überprüfen Sie, ob eine bestimmte Zeit in einem bestimmten Zeitraum liegt
* @param currTime eine bestimmte Zeit
* @param timeSlot einen bestimmten Zeitraum
* @return wahr/falsch
*/
public boolean isShift(final long currTime, String[] timeSlot) {
Kalender tempCalendar = Calendar.getInstance();
tempCalendar.setTimeInMillis(currTime);
String[] tmpArray = timeSlot[0].split(":");
lange Startzeit, Stoppzeit;
tempCalendar.clear(Calendar.HOUR_OF_DAY);
tempCalendar.clear(Calendar.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 (stopHour == 0) {
tempCalendar.add(Calendar.DAY_OF_MONTH, 1);
}
tempCalendar.clear(Calendar.HOUR_OF_DAY);
tempCalendar.clear(Calendar.MINUTE);
tempCalendar.set(Calendar.HOUR_OF_DAY, stopHour);
tempCalendar.set(Calendar.MINUTE, stopMinute);
stopTime = tempCalendar.getTimeInMillis();
return ((startTime < currTime && currTime <= stopTime) ? true : false);
}
/**
*Schichtberechnung
* @param orgCode-Zugehörigkeit
* @return result {1:große Nacht;2:Tagschicht;3:kleine Nacht;4:Nachtschicht;0:Sonderbehandlung}
*/
public int doGetShift(String orgCode) {
int Ergebnis = 0;
Kalender currCalen = Calendar.getInstance();
long currTime = currCalen.getTimeInMillis();
if (isShift(currTime, timeSubsection[2])) {
Ergebnis = 1;
} else if (isShift(currTime, timeSubsection[0])) {
Ergebnis = 2;
} else if (isShift(currTime, timeSubsection[1])) {
Ergebnis = 3;
}
Ergebnis zurückgeben;
}
//Zeitraum 0: Tagschicht; 1: kleine Nachtschicht; 2: große Nachtschicht*/
private static String[][] timeSubsection = {{"8:00", "16:00"}, {"16:00", "00:00"}, {"00:00", "08:00" }};
/**
* Datumsformatierung
* @param calenObj Datumsinstanz
* @param formatStr Formatzeichenfolge
* @return Ergebnisformat abgeschlossene Zeichenfolge
*/
public String doParseDate(Calendar calenObj, String formatStr) {
DateFormat df = new SimpleDateFormat(formatStr);
String-Ergebnis = null;
result = df.format(calenObj.getTime());
Ergebnis zurückgeben;
}