監視データのリアルタイム入力を処理する場合、現在のシフト情報 {{"8" のように、指定された時間帯に基づいて設定されます。{大日勤、小夜勤、大夜勤}。 :00", "16:00"} 、{"16:00","00:00"},{"00:00","8:00"}}
解決
・現在時刻と変換検証の開始時刻と終了時刻を比較します。
関連コード
プレーンコピーをクリップボードプリントに表示しますか?
/**
* 期間テスト
* @著者 WangYanCheng
* @バージョン 2009-11-20
*/
パブリック クラス CalendarTimeSubsectionTest {
/**
※試験入場
* @param args 引数リスト
*/
public static void main(String[] args) {
CalendarTimeSubsectionTest ctstObj = new 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(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);
}
/**
※シフト計算
* @param orgCode 所属
* @return result {1:大夜;2:日勤;3:小夜;4:夜勤;0:特別待遇}
*/
public int doGetShift(String orgCode) {
int 結果 = 0;
カレンダー currCalen = Calendar.getInstance();
長い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" }};
/**
* 日付の形式
* @param calenObj 日付インスタンス
* @param formatStr 形式文字列
* @return 結果形式の完成した文字列
*/
public String doParseDate(Calendar calenObj, String formatStr) {
DateFormat df = 新しい SimpleDateFormat(formatStr);
文字列の結果 = null;
結果 = df.format(calenObj.getTime());
結果を返します。
}