자바

[Thread stop] 원하는 기간 동안 stop

pipinstall 2022. 10. 25. 18:14
SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
SimpleDateFormat currentDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String  currentTime = timeFormat.format(time);
String currnetDate = currentDateFormat.format(time);

String  startTime = currnetDate + " " + String.valueOf("시작시간");
String endTime = currnetDate + " " + String.valueOf("끝나는시간");
// String -> Date
Date dateStartTime = timeFormat.parse(startTime);
Date dateEndTime = timeFormat.parse(endTime);
//원하는 해당 시간
Date dateCurrentTime = timeFormat.parse(currentTime);


// 크다(1), 같다(0), 작다(-1)

int compare1 = dateCurrentTime.compareTo(dateStartTime);

int compare2 = dateEndTime.compareTo(dateCurrentTime);


if(compare1 < 0 && compare2 >= 0) { 
	//시작시간이 어제이고 (끝나는시간과 현재시간이 일자가 동일하고)
	//끝나는시간이 현재시간보다 큰경우 (시작시간안에있고)
	Date format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(endTime);
	Date format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(currentTime);
	long diffSec  = (format1.getTime() - format2.getTime()) / 1000;
	long diffMin  = (format1.getTime() - format2.getTime()) / 60000;
	try {
		Thread.sleep(diffSec * 1000); // 멈춰있어야할 시간 
		
	} catch (Exception e) {
		e.printStackTrace();
	}
}

if(compare1 >= 0 && compare2 < 0){
	//현재시간이 시작시간보다크고(시작시간 안에있고) (끝나는시간과 현재시간이 일자가 동일하고)
	//끝나는시간이 내일인경우
	
	//끝나는시간을 내일로 변경
	Calendar cal = Calendar.getInstance();
        cal.setTime(dateEndTime);
        cal.add(Calendar.DATE, +1);
	
	Date format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(timeFormat.format(cal.getTime()));
	Date format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(currentTime);
	long diffSec  = (format1.getTime() - format2.getTime()) / 1000;
	long diffMin  = (format1.getTime() - format2.getTime()) / 60000;
	try {
		
		Thread.sleep(diffSec * 1000); // 멈춰있어야할 시간 
		
	} catch (Exception e) {
		e.printStackTrace();
	}
}

if(compare1 >= 0 && compare2 >= 0) { 
	// 시작시간과 끝나는시간이  오늘인경우 (현재시간이 시작시간과 끝나는시간 안이고 시작시간과 끝나는시간의 일자가 동일하고)
	Date format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(endTime);
	Date format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(currentTime);
	long diffSec  = (format1.getTime() - format2.getTime()) / 1000;
	long diffMin  = (format1.getTime() - format2.getTime()) / 60000;
	try {
		Thread.sleep(diffSec * 1000); // 멈춰있어야할 시간 
		
	} catch (Exception e) {
		e.printStackTrace();
	}
}

 

'자바' 카테고리의 다른 글

[ENUM] enum이란..  (0) 2022.10.26
[Equals VS contentEquals]  (0) 2022.10.25
[정규식] 자바에서 숫자를 체크하는 정규식  (1) 2022.10.25
[IndexOf] 문자열 확인  (0) 2022.10.24
배열 슬라이스  (0) 2021.02.19