Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在当地时间之前是否有触发行动的方法?_Java - Fatal编程技术网

Java 在当地时间之前是否有触发行动的方法?

Java 在当地时间之前是否有触发行动的方法?,java,Java,我知道这看起来很简单,但我对Java非常陌生,所以我需要你的帮助 我想使用本地时间(毫秒)触发一个动作,例如打印“Hello world”。 更具体地说,在“13:10:30:300”处打印“Hello world”。但我不知道应该使用什么特定的类(数据、本地时间等),以便在while循环中将其与所需的时间进行比较。 我试过了,但毫秒不起作用 import java.time.format.DateTimeFormatter; DateTimeFormatter dtf = DateTime

我知道这看起来很简单,但我对Java非常陌生,所以我需要你的帮助

我想使用本地时间(毫秒)触发一个动作,例如打印“Hello world”。 更具体地说,在“13:10:30:300”处打印“Hello world”。但我不知道应该使用什么特定的类(数据、本地时间等),以便在while循环中将其与所需的时间进行比较。 我试过了,但毫秒不起作用

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”!所有教程都是关于当前时间,而不是特定时间。