Timer.schedule api: 为什么定时任务第一次执行已经过了

Timer.schedule api: Why the timer task executes even the first time has passed

我已将 firstTime 设置为今天 15:35,然后每天设置一次。但是当我今天甚至在 15:35 之后启动应用程序时,它会立即启动任务。我不要那个。

 public void scheduleTimerTask() {

        int taskStartTimeInSec = 56100;
        Timer timer = new Timer();
        Calendar today = Calendar.getInstance();
        today.set(Calendar.HOUR_OF_DAY, 0);
        today.set(Calendar.MINUTE, 0);
        today.set(Calendar.SECOND, taskStartTimeInSec);
        Date firstTime = today.getTime();
        System.out.println("firstTime is : "+ firstTime);
            timer.schedule(new Task(), firstTime,
                        1000*60*60*24);
    }

    class Task extends TimerTask{

        @Override
        public void run() {
           System.out.println("Thread Invoked at "+ new Date());

        }

    }

     public static void main(String[] args) throws ParseException {
        Test t = new Test();
        t.scheduleTimerTask();
        }


    Output : 
    firstTime is : Thu Sep 15 15:35:00 IST 2016
    Thread Invoked at Thu Sep 15 18:33:35 IST 2016

我想如果我稍后开始(可能在 16:00),那么今天任务不应该执行,但明天应该在 15:35 执行。因为今天15:35时间已经过去了。

请帮忙。

根据古斯塔夫的建议:

public void scheduleTimerTask() {

        int taskStartTimeInSec = 56100;
        Timer timer = new Timer();
        Calendar today = Calendar.getInstance();
        today.set(Calendar.HOUR_OF_DAY, 0);
        today.set(Calendar.MINUTE, 0);
        today.set(Calendar.SECOND, taskStartTimeInSec);
        Date firstTime = today.getTime();
        if(firstTime.before(new Date())){
            today.add(Calendar.DATE, 1);
            firstTime = today.getTime();
        }
        System.out.println("firstTime is : "+ firstTime);
            timer.schedule(new Task(), firstTime,
                        1000*60*60*24);
    }

以上工作正常。现在,如果第一次是在我添加一天之前,那么它只会在第二天调用。