Как проверить, прошло ли X секунд в Java? - PullRequest
3 голосов
/ 01 августа 2011

Я знаю в .NET Я могу сделать это:

DateTime test = DateTime.Now;
if (test >= (pastTime + TimeSpan.FromSeconds(15)) {
    doSomething();
}

Что такое эквивалент Java?

Ответы [ 3 ]

11 голосов
/ 01 августа 2011

Для этой простой проверки я бы посоветовал просто использовать метку времени (в миллисекундах) вместо использования java.util.Date или некоторых других классов:

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

Обратите внимание, что переменная pastTime также должна быть в миллисекундах .

К сожалению, нет подходящих "встроенных" классов Java для работы с промежутками времени. Для этого проверьте библиотеку Joda Time .

1 голос
/ 01 августа 2011

По-моему, вы можете поместить это в цикл времени. Я бы реализовал это таким образом.

long initTime = System.currentTimeMillis();
boolean timeElapsed = false;
while(timeElapsed){
  if(System.currentTimeMillis - initTime > 15000 ){
    timeElapsed = true
  }else{
    doSomethingElse();
    Thread.sleep(500)
  }
}
doSomething()
0 голосов
/ 28 августа 2012

Мне удалось это сделать с помощью библиотеки 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 между datetime1 и datetime2 isGreaterThan 5 Minutes. Измените свойство на Seconds. Это будет легче для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...