如何为特定的小时和分钟创建 Timer.schedule() ?

发布于 2024-11-25 10:59:11 字数 315 浏览 0 评论 0原文

我试图让 schedule() 方法等到特定的小时和分钟 来并开始执行任务但没有成功 因为方法 schedule() 不需要花费几小时和几分钟 作为一个论点,这个方法的替代品是什么?我应该制定几个小时的时间表 那么当时间到的时候程序会检查分钟吗?那么如果两者都正确 它会开始执行还是什么?

聚苯乙烯 为了使事情更容易理解,如何制作与此类似的东西 :

schedule(new TimerClass(),所需时间所需分钟)?

i tried to make the schedule() method wait till a specific hour and minute
comes and start to execute the task but it didnt work
because the method schedule() doesnt take hours and minutes
as an argument, what is the replacment for this method? i'm i supposed make schedule for hours
then when the hour comes the program check the minutes? then if both are correct
it will start executing or what?

P.S
for making things easier to understand, how to make something similier to this
:

schedule(new TimerClass(), desired hours, desired minutes)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

書生途 2024-12-02 10:59:11

如果您想安排特定的时钟时间(而不是从当前时间延迟),这里有一些选项:

  • 使用 Quartz,如果你这样做足以证明额外的库是合理的。 Quartz 可以轻松指定时钟时间,并支持调度重复事件。
  • 否则,在您安排时间时,计算当前时间和所需时间之间的差异。 (使用 Calendar 类创建时钟时间,转换为日期,然后 getMillis()。)将差异提供给 Timer——或 ScheduledThreadPoolExecutor。

If you want to schedule for a particular clock time (rather than a delay from current time), here are some options:

  • Use Quartz, if you're doing this enough to justify the additional library. Quartz makes it easy to specify clock times, and supports scheduling recurring events.
  • Otherwise, at the time you're scheduling, compute the difference between the current time and the desired time. (Use the Calendar class to create clock times, convert to Dates, and getMillis().) Feed the difference to Timer -- or ScheduledThreadPoolExecutor.
却一份温柔 2024-12-02 10:59:11

您不需要这样的硬编码。测试一小时然后几分钟。只需按如下所示安排任务即可。
下面给出的任务将在一小时后执行,并且每 30000ms 重复一次。如果您只需要执行一次,请像使用 t.cancel() 一样取消第一次执行后的时间,并将小时+分钟转换为毫秒以放置计划时间

 TimerTask scanTask;
final Handler handler = new Handler();
Timer t = new Timer();


scanTask = new TimerTask() {
        public void run() {
                handler.post(new Runnable() {
                        public void run() {
                         //do your task here    

                    }
               });
        }};

t.schedule(scanTask, 1*60*60*1000, 30000); 

You don't need to such a hardcoding.Testing hour then minutes.Just schedule the task like below.
The task given below will execute after one hour and will be repeated in each 30000ms.If you need execution only once then cancel the time after first execution like using t.cancel() and also convert Hour+minute to ms to put the scheduled time

 TimerTask scanTask;
final Handler handler = new Handler();
Timer t = new Timer();


scanTask = new TimerTask() {
        public void run() {
                handler.post(new Runnable() {
                        public void run() {
                         //do your task here    

                    }
               });
        }};

t.schedule(scanTask, 1*60*60*1000, 30000); 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文