Java 在当地时间之前是否有触发行动的方法?
我知道这看起来很简单,但我对Java非常陌生,所以我需要你的帮助 我想使用本地时间(毫秒)触发一个动作,例如打印“Hello world”。 更具体地说,在“13:10:30:300”处打印“Hello world”。但我不知道应该使用什么特定的类(数据、本地时间等),以便在while循环中将其与所需的时间进行比较。 我试过了,但毫秒不起作用Java 在当地时间之前是否有触发行动的方法?,java,Java,我知道这看起来很简单,但我对Java非常陌生,所以我需要你的帮助 我想使用本地时间(毫秒)触发一个动作,例如打印“Hello world”。 更具体地说,在“13:10:30:300”处打印“Hello world”。但我不知道应该使用什么特定的类(数据、本地时间等),以便在while循环中将其与所需的时间进行比较。 我试过了,但毫秒不起作用 import java.time.format.DateTimeFormatter; DateTimeFormatter dtf = DateTime
import java.time.format.DateTimeFormatter;
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss:ms");
LocalDateTime now = LocalDateTime.now();
LocalDateTime desire = 13:10:30.300;
while (now != desire ) {
LocalDateTime now = LocalDateTime.now();
}
System.out.println("Hello World!");
您有什么建议吗?您的主要问题是:
现在!=欲望
。这将比较这些对象是否相同,而不是它们的内容是否相同。要比较时间是否相同,应使用now.equals(desire)
第二个问题是,如果两次检查之间的now
大于desire
,这个循环可能会变得无限大
您的第三个问题是,您不断地检查时间,这是在浪费CPU周期。你应该计算出你想要的时间还有多少毫秒,然后一直睡到那个时候。所以类似于:
Thread.sleep(desireMillis-nowMillis)
不要使用while循环来实现这一点。因为LocalDateTime还包括日期,这可能会触发循环永不过期。你最好的选择是一个cron时间表或类似的东西。代码示例中有很多错误。现在在循环中重新声明。设置一个只有时间的LocalDateTime(日期是什么)非常感谢,我知道如何找到“nowMilis”,但我仍然不知道如何声明“Desiremilis”!所有教程都是关于当前时间,而不是特定时间。