如何使用This post使用while循环在特定时间之间执行特定任务(例如使用伪代码:
while time > 05:00 && time < 16:59
我知道我需要在输入后将这些更改为整数,我只是不确定如何进行实际的while循环。
我已通过以下方式将它们更改为:
String hoursString = time.substring(0,1);
String minutesString = time.substring(3,4);
int hours = Integer.parseInt(hoursString);
int minutes = Integer.parseInt(minutesString);
编辑:
非常感谢你的帮助,我选择了if语句的另一个方向来检查时间的不足和超过条件。 :)
if ((hours >= 05) && (hours <= 16) { do stuff}
这就是我的用途。 ^
答案 0 :(得分:1)
您可以比较条件之前的日期......
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String format = TIME_FORMAT;
boolean isDateOk = false;
Date theDate1 = new Date();
Date theDate2 = new Date();
try {
theDate1 = new SimpleDateFormat(TIME_FORMAT).parse("05:00");
theDate2 = new SimpleDateFormat(TIME_FORMAT).parse("16:59");
} catch (ParseException e1) {
}
String inp = "";
SimpleDateFormat sdf = new SimpleDateFormat(format);
while (!isDateOk) {
System.out.println("Please give the desired time in this fomrat HH:mm ...");
inp = s.nextLine();
try {
Date date = sdf.parse(inp);
if (date.compareTo(theDate1) > 0 && date.compareTo(theDate2) < 0) {
isDateOk = true;
}
// date.compareTo(theDate1) // will return an int, if negative
// means date time is bigger than theDate1
} catch (ParseException e) {
System.err.println("invalid date...");
}
}
// out of the while
System.out.println("the given date was ok");
}
答案 1 :(得分:1)
你不想使用while循环。 while循环将锁定您的UI。你应该做的是使用java.util.Timer
。
基本上,您希望按照此帖Scheduling a Timer Task to Run at a Certain Time : Timer中的说法执行此操作:
import java.sql.Date; import java.util.Timer; import
java.util.TimerTask;
public class Main { public static void main(String[] argv) throws
Exception {
Date timeToRun = new Date(System.currentTimeMillis() + numberOfMillisecondsInTheFuture);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("doing");
}
}, timeToRun); } }
然后你会在结束时结束计时器。当然,在您的特定情况下,您只需使用您想要的特定日期初始化日期对象,而不是在将来使用特定的毫秒数。