我知道.NET我可以這樣做:如何檢查Java中是否已經過了X秒?
DateTime test = DateTime.Now;
if (test >= (pastTime + TimeSpan.FromSeconds(15)) {
doSomething();
}
什麼是Java相當於?
我知道.NET我可以這樣做:如何檢查Java中是否已經過了X秒?
DateTime test = DateTime.Now;
if (test >= (pastTime + TimeSpan.FromSeconds(15)) {
doSomething();
}
什麼是Java相當於?
對於這個簡單的檢查,我會建議簡單地使用時間戳(以毫秒爲單位),而不是使用java.util.Date或者一些其他類:
long test = System.currentTimeMillis();
if(test >= (pastTime + 15*1000)) { //multiply by 1000 to get milliseconds
doSomething();
}
請注意,pastTime
變量也必須以毫秒爲單位。
不幸的是,沒有合適的「內置」java類來處理時間跨度。爲了做到這一點,請查看Joda Time庫。
在我看來,你可以把它放在一個週期。我會以這種方式實施它。
long initTime = System.currentTimeMillis();
boolean timeElapsed = false;
while(timeElapsed){
if(System.currentTimeMillis - initTime > 15000){
timeElapsed = true
}else{
doSomethingElse();
Thread.sleep(500)
}
}
doSomething()
我能夠通過在我的項目中使用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
間隔和datetime2
之間。將該屬性更改爲Seconds
。你會更容易知道。
Alex的代碼不會等到15秒結束,它只會檢查_if_它們是否結束。當我第一次閱讀時誤解了這一點。 – f1sh
@ f1sh是的這是真的......但通常當你檢查一段時間是否結束時,你會重做它,直到這個時間真的結束......我沒有看到用例只檢查一次。但是對於corse,這是我的意見;) – Maverik
它沒有被檢查過一次,它被檢查了很多次,但在此期間基於此檢查執行了其他操作。 –