Java时循环与时间

时间:2016-06-18 14:59:38

标签: java string time while-loop

如何使用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}

这就是我的用途。 ^

2 个答案:

答案 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);   } }

然后你会在结束时结束计时器。当然,在您的特定情况下,您只需使用您想要的特定日期初始化日期对象,而不是在将来使用特定的毫秒数。