【JavaScript】指定した時間に処理を行う方法

JavaScriptで指定した時間に自動的にプログラムを実行する方法について解説します。これにより、指定時刻に合わせて処理を開始するプログラムを簡単に作成できます。今回は、setTimeoutとsetIntervalを活用した2つの方法を紹介します。

setTimeoutを使用して特定時間に実行する

setTimeout関数は、指定した時間が経過した後に一度だけ関数を実行するのに適しています。まず、現在時刻から指定時刻までの時間を計算し、その時間が経過したらプログラムを実行する方法を見てみましょう。

function executeAtTime(targetTime) {
  const now = new Date();
  const delay = targetTime.getTime() - now.getTime();
  
  if (delay > 0) {
    setTimeout(() => {
      console.log('指定時刻に処理を実行します。');
      // 実行したいプログラムをここに記述
    }, delay);
  } else {
    console.log('指定時刻は過ぎています。');
  }
}

// 実行する時間を設定(例: 15時30分)
const targetTime = new Date();
targetTime.setHours(15, 30, 0, 0);

executeAtTime(targetTime);

上記のコードでは、指定した時間が現在より未来であれば、その時間が経過した後に処理が実行されます。

setIntervalを使用して定期的に時刻をチェックする

次に、setIntervalを使って、一定の間隔で現在時刻をチェックし、指定した時刻になったらプログラムを実行する方法を紹介します。この方法では、指定時刻になるまで毎秒チェックを行い、条件が満たされたら処理を実行します。

function checkTime(targetTime) {
  const interval = setInterval(() => {
    const now = new Date();
    
    if (now.getHours() === targetTime.getHours() && 
        now.getMinutes() === targetTime.getMinutes() &&
        now.getSeconds() === targetTime.getSeconds()) {
      
      console.log('指定時刻に処理を実行します。');
      // 実行したいプログラムをここに記述
      
      clearInterval(interval); // 処理実行後、インターバルをクリア
    }
  }, 1000); // 1秒ごとにチェック
}

// 実行する時間を設定(例: 15時30分)
const targetTime = new Date();
targetTime.setHours(15, 30, 0, 0);

checkTime(targetTime);

この方法では、setIntervalを利用して1秒ごとに現在時刻をチェックし、指定した時刻になったら処理を実行します。処理が実行された後は、clearIntervalでインターバルを解除します。

毎日決まった時間に実行する方法

最後に、setIntervalと条件判定を組み合わせて、毎日特定の時刻にプログラムを実行する方法を紹介します。この方法では、毎分のチェックを行い、指定した時間になったら処理を実行します。

function dailyTask(targetHour, targetMinute) {
  setInterval(() => {
    const now = new Date();
    
    if (now.getHours() === targetHour && now.getMinutes() === targetMinute) {
      console.log('毎日指定時刻に処理を実行します。');
      // 実行したいプログラムをここに記述
    }
  }, 60000); // 1分ごとにチェック
}

// 実行する時間を設定(例: 毎日15時30分)
dailyTask(15, 30);

このコードでは、毎日15時30分に指定された処理が実行されます。setIntervalで毎分チェックを行い、条件を満たした時点で処理が行われます。

まとめ

JavaScriptを使って指定した時間に自動的にプログラムを実行する方法を紹介しました。setTimeoutやsetIntervalを組み合わせることで、柔軟にタイミングを設定し、様々なシナリオでプログラムを自動化できます。今回紹介した方法を活用して、ぜひ自分のプロジェクトに応用してみてください。