java中如何在指定时间自动执行函数

java中如何在指定时间自动执行函数,java,timer,Java,Timer,我有一个要求,我需要在用户设置的指定时间执行一个函数。该函数包含从数据库生成pdf文件并将其保存到机器本地驱动器的代码。。 在这里,时间需要由用户设置,并且可以根据其要求进行更改 我从来没有上过课 我有一个从google获得的代码片段,但我不知道如何在这段代码中设置函数执行的用户特定时间细节 下面是代码片段 class ReportGenerator extends TimerTask { public void run() { System.out.println("Generati

我有一个要求,我需要在用户设置的指定时间执行一个函数。该函数包含从数据库生成pdf文件并将其保存到机器本地驱动器的代码。。 在这里,时间需要由用户设置,并且可以根据其要求进行更改

我从来没有上过课

我有一个从google获得的代码片段,但我不知道如何在这段代码中设置函数执行的用户特定时间细节

下面是代码片段

class ReportGenerator extends TimerTask {

public void run() {
    System.out.println("Generating report");
    //TODO generate report
}
        }

  class MainApplication {

public static void main(String[] args) {
    Timer timer = new Timer();
    Calendar date = Calendar.getInstance();
    date.set(
            Calendar.DAY_OF_WEEK,
            Calendar.SATURDAY);
    date.set(Calendar.HOUR, 0);
    date.set(Calendar.MINUTE, 0);
    date.set(Calendar.SECOND, 0);
    date.set(Calendar.MILLISECOND, 0);
    // Schedule to run every Sunday in midnight
    timer.schedule(
            new ReportGenerator(),
            date.getTime(),
            1000 * 60 * 60 * 24 * 7);
}
}

我也不明白这段代码的意思。这意味着什么

 timer.schedule(
            new ReportGenerator(),
            date.getTime(),
            1000 * 60 * 60 * 24 * 7);
}
在上面的代码片段中,给定的函数将在每个星期六执行

请帮帮我,任何想法都欢迎。。。
提前谢谢。

我可以推荐一个名为的好图书馆。它的主要目的是在给定的时间开始工作。

我可以推荐一个名为的好库。它的主要目的是在给定的时间开始工作。

我可以推荐一个名为的好库。它的主要目的是在给定的时间开始工作。

我可以推荐一个名为的好库。它的主要目的是在给定的时间开始工作。

好的,所以我查看了一下Timer类,发现您的方法几乎是正确的。您需要稍微编辑代码以获得所需的功能

Calendar calendar = Calendar.getInstance();
date.set(Calendar.DAY_OF_WEEK, getUserInputDay()); //
calendar.set(Calendar.HOUR_OF_DAY, getUserInputHour());
calendar.set(Calendar.MINUTE, getUserInputMinute());
calendar.set(Calendar.SECOND, getUserInputSeconds());
Date time = calendar.getTime();

timer = new Timer();
timer.schedule(new ReportGenerator(), time);

这将启动一个计时器,在规定的时间启动“ReportGenerator”。您必须自己弄清楚如何从用户那里获得输入(应该相当简单!)

好的,所以我仔细研究了一下Timer类,发现您的方法几乎是正确的。您需要稍微编辑代码以获得所需的功能

Calendar calendar = Calendar.getInstance();
date.set(Calendar.DAY_OF_WEEK, getUserInputDay()); //
calendar.set(Calendar.HOUR_OF_DAY, getUserInputHour());
calendar.set(Calendar.MINUTE, getUserInputMinute());
calendar.set(Calendar.SECOND, getUserInputSeconds());
Date time = calendar.getTime();

timer = new Timer();
timer.schedule(new ReportGenerator(), time);

这将启动一个计时器,在规定的时间启动“ReportGenerator”。您必须自己弄清楚如何从用户那里获得输入(应该相当简单!)

好的,所以我仔细研究了一下Timer类,发现您的方法几乎是正确的。您需要稍微编辑代码以获得所需的功能

Calendar calendar = Calendar.getInstance();
date.set(Calendar.DAY_OF_WEEK, getUserInputDay()); //
calendar.set(Calendar.HOUR_OF_DAY, getUserInputHour());
calendar.set(Calendar.MINUTE, getUserInputMinute());
calendar.set(Calendar.SECOND, getUserInputSeconds());
Date time = calendar.getTime();

timer = new Timer();
timer.schedule(new ReportGenerator(), time);

这将启动一个计时器,在规定的时间启动“ReportGenerator”。您必须自己弄清楚如何从用户那里获得输入(应该相当简单!)

好的,所以我仔细研究了一下Timer类,发现您的方法几乎是正确的。您需要稍微编辑代码以获得所需的功能

Calendar calendar = Calendar.getInstance();
date.set(Calendar.DAY_OF_WEEK, getUserInputDay()); //
calendar.set(Calendar.HOUR_OF_DAY, getUserInputHour());
calendar.set(Calendar.MINUTE, getUserInputMinute());
calendar.set(Calendar.SECOND, getUserInputSeconds());
Date time = calendar.getTime();

timer = new Timer();
timer.schedule(new ReportGenerator(), time);


这将启动一个计时器,在规定的时间启动“ReportGenerator”。您必须自己弄清楚如何从用户那里获得输入(应该相当简单!)

这段代码面临的问题是什么?用户输入看起来像什么?@nishantshresh如何使用用户输入计时细节来执行函数此代码面临什么问题?用户输入看起来像什么?@nishantshresh如何使用用户输入计时细节来执行函数此代码面临什么问题?用户输入看起来像什么?@nishantshresh如何使用用户输入计时细节来执行函数此代码面临什么问题?用户输入看起来像什么?@nishantshresh如何使用用户输入计时细节来执行函数谢谢您的回答,先生,我对这个代码片段有疑问..1000*60*60*24*7);这段代码在给定的代码中做了什么请看我在文章中的第二段代码基本上这段代码所做的就是取int值,把它转换成一秒钟->一分钟->一小时->一天->7天(一周)。我猜它取当前日期并加上7天,使计时器为7天。@Chikilah肯定是个吹毛求疵的人,但这段代码不会使用当前毫秒偏移量而不是用户输入的确切时间吗?例如,如果
Calendar.getInstance()
返回时间2013-11-22 09:25:04.732,那么将保留.732。很好的捕获-是的,在这种情况下将保留毫秒。要解决这个问题,您只需将毫秒数也设置为0,如:calendar.set((calendar.millisond,0);谢谢您的回答,先生,我对这个代码片段有疑问..1000*60*60*24*7);这段代码在给定的代码中做了什么请看我在文章中的第二段代码基本上这段代码所做的就是取int值,把它转换成一秒钟->一分钟->一小时->一天->7天(一周)。我猜它取当前日期并加上7天,使计时器为7天。@Chikilah肯定是个吹毛求疵的人,但这段代码不会使用当前毫秒偏移量而不是用户输入的确切时间吗?例如,如果
Calendar.getInstance()
返回时间2013-11-22 09:25:04.732,那么将保留.732。很好的捕获-是的,在这种情况下将保留毫秒。要解决这个问题,您只需将毫秒数也设置为0,如:calendar.set((calendar.millisond,0);谢谢您的回答,先生,我对这个代码片段有疑问..1000*60*60*24*7);这段代码在给定的代码中做了什么请看我在文章中的第二段代码基本上这段代码所做的就是取int值,把它转换成一秒钟->一分钟->一小时->一天->7天(一周)。我猜它取当前日期并加上7天,使计时器为7天。@Chikilah肯定是个吹毛求疵的人,但这段代码不会使用当前毫秒偏移量而不是用户输入的确切时间吗?例如,如果
Calendar.getInstance()
返回时间2013-11-22 09:25:04.732,那么将保留.732。很好的捕获-是的,在这种情况下将保留毫秒。要解决这个问题,您只需将毫秒数也设置为0,如:calendar.set((calendar.millisond,0);谢谢您的回答,先生,我对这个代码片段有疑问..1000*60*60*24*7);什么