عند معالجة إدخال بيانات المراقبة في الوقت الفعلي، تحتاج إلى توفير معلومات التحول الحالية {التحول اليومي الكبير، التحول الليلي الصغير، التحول الليلي الكبير}. يتم تعيين معلومات التحول بناءً على فترة زمنية معينة، على غرار {{"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 صحيح/خطأ
*/
isShift المنطقية العامة (final long currTime، String[] timeSlot) {
Calendar 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]);
إذا (ساعة التوقف == 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 الانتماء
* @ نتيجة العودة {1:ليلة كبيرة؛2:وردية نهارية؛3:ليلة صغيرة؛4:وردية ليلية؛0:معاملة خاصة}
*/
public int doGetShift(String orgCode) {
نتيجة كثافة العمليات = 0؛
التقويم currCalen = Calendar.getInstance();
long currTime = currCalen.getTimeInMillis();
إذا (isShift(currTime, timeSubsection[2])) {
النتيجة = 1؛
} else if (isShift(currTime, timeSubsection[0])) {
النتيجة = 2؛
} else if (isShift(currTime, timeSubsection[1])) {
النتيجة = 3؛
}
نتيجة الإرجاع؛
}
// الفترة الزمنية 0: وردية نهارية 1: وردية ليلية صغيرة؛ 2: وردية ليلية كبيرة*/
سلسلة ثابتة خاصة[]] timeSubsection = {{"8:00"، "16:00"}، {"16:00"، "00:00"}، {"00:00"، "08:00" }};
/**
* تنسيق التاريخ
* @param calenObj مثيل التاريخ
*param formatStr سلسلة التنسيق
* @return تنسيق النتيجة مكتمل
*/
سلسلة عامة doParseDate(Calendar calenObj, String formatStr) {
DateFormat df = new SimpleDateFormat(formatStr);
نتيجة السلسلة = فارغة؛
النتيجة = df.format(calenObj.getTime());
نتيجة الإرجاع؛
}