使用到一个timer的类,我想让timer.schedule在每个星期一的早上8点到FTP服务器去DOWN一些数据,我想实现的是不管我什么时候启动time类,schedule方法都会固定到星期一的八点才去运行!请问如何实现?

解决方案 »

  1.   

    try{

    String strDate = Utils.getSysTime("yyyy/MM/dd") + " " + timeOfDay;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Date dt = sdf.parse(strDate);

    long lngPeriod = 24*60*60*1000;

    if (StatisticsAction == null){
    StatisticsAction = new RegularStat();
    }else if (StatisticsAction.cancel()){
    StatisticsAction = new RegularStat();
    }

    super.schedule(StatisticsAction,dt,lngPeriod);
    Debug.write("Regular statistics started!");

    }catch(Exception ex){
    ex.printStackTrace();
    }
      

  2.   

    我把代码贴贴给了,你想要的应该是
    super.schedule(StatisticsAction,dt,lngPeriod);
    三个参数分别是,执行对象、执行时间、间隔时间
    你按照自己需要的替代就可以了,间隔时间是按毫秒的,一天就是24*60*60*1000,一周就再乘以7
      

  3.   

    dt是你指定的时间,这一句看到了吗:
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Date dt = sdf.parse(strDate);
    你想在固定的day而不是date执行,就要自己去确定最近的day是什么date,比如getday后确定今天是星期几,然后根据这个得到下个星期一是几月几号
      

  4.   

    如果这样的,我可不可以,得到今天星期几,然后根据离我固定的日期还距离的豪秒数来启动程序。也就是说dt我把它变成距离启动时间的毫秒数.
    int mydate = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
                if (mydate == 1) {
                    mydate = 8;
                }
                long oneDay=....//这里oneDay就是距离下一天还剩下的毫秒数
                long misc = oneDay+ 5 * 3600000 + (7 - mydate + 1) * 86400000;
                super.schedule(StatisticsAction,misc,lngPeriod);//这里的misc可以吗?
      

  5.   

    第二个参数要求传入的是时间值,至于有没有其他的,你查查API吧
      

  6.   

    timer.schedule(task, period, period);task是你要执行的任务
    delay是当前时间开始多少毫秒后执行
    period是以后的循环时间段。
      

  7.   

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_WEEK, 2); //每周的第二天,也就是周一
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.HOUR_OF_DAY, 8);calendar.set(Calendar.SECOND, 0);
    Date time = calendar.getTime();timer = new Timer();
    timer.schedule(new RemindTask(), time);
    周一 8:00执行,如果要保证固定到星期一的八点才去运行还需设置
      

  8.   

    我的程序现在就是让其每个星期一早上8点去FTP下载数据,具体代码是:
    int mydate = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
                if (mydate == 1) {
                    mydate = 8;
                }
                long oneDay=....//这里oneDay就是距离下一天还剩下的毫秒数
                long misc = oneDay+ 5 * 3600000 + (7 - mydate + 1) * 86400000;
                super.schedule(StatisticsAction,misc,lngPeriod);
    但是每次到了时间似乎并不运行!
    表面上看似乎没问题。
    不知道kingofworl(良辰美景虚度) 兄弟你的方法测试过这种一周的时间这么长的吗???
    是不是还是有一他的问题存在呢?
      

  9.   

    相出办法了
           Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_WEEK, 3);
    calendar.set(Calendar.MINUTE, 30);
    calendar.set(Calendar.HOUR_OF_DAY, 11);calendar.set(Calendar.SECOND, 0);
    Date time = calendar.getTime();timer = new Timer();
    timer.scheduleAtFixedRate(new RemindTask(), time,24*60*60*1000*7);在任务类中 定义一个 private static int i=0;
    i++
    判断如果i=1 说明程序初次启动,不执行内容,这样比如今天 已经过了11:30,也不会执行具体内容了
      

  10.   

    看看这个吧
    http://www.opensymphony.com/quartz/
      

  11.   

    用任务控制器调度!每日推荐票更新
    ADMINISTRATOR DB2 命令脚本 成功 2006-05-13 09:00:03.0 2006-05-13 09:00:14.0 00:00:11 1.0
    ADMINISTRATOR DB2 命令脚本 已到期 2006-05-15 07:52:24.0 00:00:00 1.0
    ADMINISTRATOR DB2 命令脚本 成功 2006-05-15 09:00:02.0 2006-05-15 09:00:09.0 00:00:07 1.0
    ADMINISTRATOR DB2 命令脚本 成功 2006-05-16 09:00:03.0 2006-05-16 09:00:20.0 00:00:17 1.0
    ADMINISTRATOR DB2 命令脚本 成功 2006-05-17 09:00:04.0 2006-05-17 09:00:21.0 00:00:17 1.0
    ADMINISTRATOR DB2 命令脚本 成功 2006-05-18 09:00:20.0 2006-05-18 09:01:04.0 00:00:44 1.0
    ADMINISTRATOR DB2 命令脚本 成功 2006-05-19 09:00:02.0 2006-05-19 09:00:15.0 00:00:13 1.0
    ADMINISTRATOR DB2 命令脚本 成功 2006-05-20 09:00:05.0 2006-05-20 09:00:23.0 00:00:18 1.0
    ADMINISTRATOR DB2 命令脚本 已到期 2006-05-22 08:10:10.0 00:00:00 1.0
    ADMINISTRATOR DB2 命令脚本 成功 2006-05-22 09:00:02.0 2006-05-22 09:00:09.0 00:00:07 1.0
    ADMINISTRATOR DB2 命令脚本 成功 2006-05-23 09:00:02.0 2006-05-23 09:00:13.0 00:00:11 1.0
    ADMINISTRATOR DB2 命令脚本 成功 2006-05-24 09:00:02.0 2006-05-24 09:00:11.0 00:00:09 1.0