重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

毎日決められた時間になったら
処理をするというプログラムを作りたいのですが,
どのようにすればよいでしょうか?

例えば0時0分0秒になったら
「日が変わりました」というように表示させたいです.

アドバイスをいただけないでしょうか?

なぜこんなプログラムを作りたいのかという疑問もあると思いますが,
私はこのプログラムを利用して
通信のプログラムで定期的に処理をさせるような仕組みにしたいと考えています.

どなたかお願いします.

A 回答 (4件)

先ず、パソコンは、常時電源が入ってもいいのですよね。



カレンダーから、今日の日付から時間と分と秒を
抽出して、条件分で、その時間に達したら
ラベル等に、表示させては、如何ですか???


例えば、

Calendar ca = Calendar.getInstance();

System.out.println(ca.get(Calendar.DATE));

if (ca.get(Calendar.DATE) == 21){
System.out.println("21日です");
}

以下のようにすると、

現在の日付を取得して、日にちを抽出して、そうすれば
21日ごとに、日付を出力するに、応用が出来ると思います。
    • good
    • 0

 繰り返し間隔が毎日といった場合の最適な方法はOSが持っているジョブ管理機能の利用だと思う。

WindowsならタスクスケジューラとかUN*Xならcronとか。
 Javaで行うなら、java.util.Timerクラスを利用すれば基本的なことはできる。java.util.TimerTaskクラスのrunメソッドに行いたい処理を記述してオーバーライドしたクラスを作り、TimerインスタンスのscheduleAtFixedRateメソッドのの第一引数に渡す。第二引数には初回実行の日時を表したDateを、第三引数には1日=24*3600*1000ミリ秒を渡す。これで初回実行の時刻と同じ時刻に処理が繰り返される。
 他には、TimerTaskと初回実行の日時だけをscheduleメソッドに渡して、行いたい処理の中で次回の実行の日時を新たなTimerインスタンスにスケジューリングするといった方法もある。
 単純にはこれでいいが、プログラムが止まれば当然終了するし、そうでなくても何らかのトラブルで処理が遅延したり中断した場合の対策や処理のログ取り等にも対処しないといけなくなるかもしれない。そういったことを考えると、Javaで書くのは毎回行いたい処理を行う部分だけで、それを実行するタイミング等はOSのジョブ管理機能に任せるのがいいと思う。
    • good
    • 0
この回答へのお礼

皆様、回答ありがとうございます.

皆様のアドバイスを参考にさせていただいたら
問題を解決することができました.

ありがとうございました.

お礼日時:2010/02/24 14:43

java.util.Timerクラスを使えばいいのでは? schedule(TimerTask, Date)メソッドで、指定した内容の動作を指定した日時に実行できます。

    • good
    • 0

そのまま、提示に機動する処理にすればよいのでは?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!