2011-08-01 4 views

답변

9

:

long test = System.currentTimeMillis(); 
if(test >= (pastTime + 15*1000)) { //multiply by 1000 to get milliseconds 
    doSomething(); 
} 

pastTime 변수도해야한다는 것을 유의하시기 바랍니다 밀리 초 단위로 이되어야합니다..

불행히도 시간 범위를 처리하는 데 적합한 "내장"Java 클래스가 없습니다. 이를 위해 Joda Time 라이브러리를 확인하십시오.

1

내 의견으로는 당신은 그것을주기에 넣을 수 있습니다. 나는이 방법으로 그것을 구현할 것이다.

long initTime = System.currentTimeMillis(); 
boolean timeElapsed = false; 
while(timeElapsed){ 
    if(System.currentTimeMillis - initTime > 15000){ 
    timeElapsed = true 
    }else{ 
    doSomethingElse(); 
    Thread.sleep(500) 
    } 
} 
doSomething() 
+0

Alex의 코드는 15 초가 끝날 때까지 기다리지 만, 끝났다고 만 확인합니다. 처음 읽었을 때도이 점을 잘못 이해했습니다. – f1sh

+0

@ f1sh 그래, 사실이야 ...하지만 대개 시간이 다 끝났는지 확인하면이 시간이 끝날 때까지 다시 할 수있다. 한 번만 확인하는 유스 케이스는 보이지 않는다. 그러나 이것의 내 의견입니다) – Maverik

+0

한 번만 검사하지 않고 여러 번 검사하지만 잠시 동안이 검사를 기반으로 다른 작업이 수행됩니다. –

0

내 프로젝트에서 JodaTime 라이브러리를 사용하여이를 수행 할 수있었습니다. 이 코드가 나왔습니다.

String datetime1 = "2012/08/24 05:22:34"; 
String datetime2 = "2012/08/24 05:23:28"; 

DateTimeFormatter format = DateTimeFormat.forPattern("yyyy/MM/dd HH:mm:ss"); 
DateTime time1 = format.parseDateTime(datetime1); 
DateTime time2 = format.parseDateTime(datetime2); 
Minutes Interval = Minutes.minutesBetween(time1, time2); 
Minutes minInterval = Minutes.minutes(5); 

if(Interval.isGreaterThan(minInterval)){ 
    return true; 
} 
else{ 
    return false; 
} 

이것은 Time 간격 경우 및 isGreaterThan 5 Minutesdatetime2 사이에 확인합니다. 속성을 Seconds으로 변경하십시오. 당신이 더 쉽게 알게 될 것입니다.

관련 문제