2016-11-29 2 views
0

私のコードでは、24時間ごとに起動されるべきタスクを書こうとしています。最初のトリガーは、タイマーがスケジュールされているときに開始し、その後は朝に7回になる必要があります。私はこのような何かを書いた Javaタイマーは深夜0時から始まらない

java.util.TimerTask 

を使用してM:

Calendar today = Calendar.getInstance(); 
today.set(Calendar.HOUR_OF_DAY, 7); 
today.set(Calendar.MINUTE, 0); 
today.set(Calendar.SECOND, 0); 
timer.schedule(task1, today.getTime(), TimeUnit.MILLISECONDS.convert(24, TimeUnit.HOURS)); 

タスクが私は自分のアプリケーションを実行するたびに起動されていることが起こる...しかし、真夜中の後、私は実行する場合(予想通り?)を私のアプリケーションは、タスクがトリガされていません。

どこがエラーですか?

おかげ

+0

"真夜中後に"正確にはどういう意味ですか?すべての時間は真夜中の後です。 –

+0

'timer'はどのようなタイプですか? (私はそれが 'ScheduledExecutorService'であるかどうかチェックしましたが、そのシグネチャには何も一致しません)。 –

+0

java.util.TimerTask ...私は00.01で私のアプリケーションを実行しようとしたことを意味し、タスクは実行されませんでした。そして、毎晩同じ動作があります。 – Alex

答えて

0

あなたはfirstTimeとして、現在の日(ない翌日)の07:00:00を提供しています。

時間が午前7時以降の場合は、firstTimeは過去です。おそらくこれが、タスクがすぐに開始される理由です。

時間は午前7時前におそらく「真夜中の後に」の場合は、firstTimeは、将来的にあります。だから、仕事が始まるまで午前7時を待たなければなりません。

+0

私は今時間トリガ時間を0に変更し、タスクが開始されます。だから、あなたは正しい答えのようです。 – Alex

関連する問題