JavaScriptで秒数を時間と分に変換する方法
問題
本記事では、秒数を受け取り、その秒数に含まれる「時間」と「分」を返すJavaScript関数の作成方法を解説します。動画の再生時間やタイマー処理など、秒単位のデータを人間が読みやすい形式に変換したい場面で役立つテクニックです。
入力例:
const seconds = 3601;
期待される出力:
const output = "1 hour(s) and 0 minute(s)";
変換の考え方
秒数を時間と分に変換するには、以下の基本的な単位関係を利用します。
- 1時間 = 3600秒
- 1分 = 60秒
手順はシンプルです。まず、元の秒数を3600で割った整数部分が「時間」になります。次に、時間に変換した分を差し引いた残りの秒数を60で割り、その整数部分が「分」になります。parseInt()を使うことで、小数点以下を切り捨てた整数値を簡単に取得できます。
コード例
実際のコードは以下の通りです。
const seconds = 3601;
const toTime = (seconds = 60) => {
// 各単位の秒数を定義
const hR = 3600; // 1時間
const mR = 60; // 1分
// 時間を計算(小数点以下は切り捨て)
let h = parseInt(seconds / hR);
// 時間を除いた残りの秒数から分を計算
let m = parseInt((seconds - (h * 3600)) / mR);
// 結果文字列を組み立てて返す
let res = '';
res += (`${h} hour(s) and ${m} minute(s)`);
return res;
};
console.log(toTime(seconds));出力結果
"1 hour(s) and 0 minute(s)"
コードのポイント
- デフォルト引数:
(seconds = 60)のように引数に初期値を設定しているため、引数なしで呼び出されてもエラーにならず動作します。 - parseInt()による切り捨て: 割り算の結果から整数部分だけを取り出すことで、余りの秒数を自然に除外しています。
- テンプレートリテラル: バッククォートと
${}を使うことで、数値を文字列へ簡潔に埋め込んでいます。
たとえば入力が 3661 秒であれば、「1時間1分」となり、出力は "1 hour(s) and 1 minute(s)" になります。同様のロジックを応用すれば、「秒」まで含めた表示や、String.prototype.padStart() を使った「01:01:01」のようなゼロ埋めフォーマットへの拡張も可能です。
-
JavaScriptでキューから要素を削除する方法(dequeueの実装)
キューから要素をデキュー(dequeue)するととは、キューの先頭(ヘッド)から要素を取り除くことを意味します。本記事では、コンテナ配列の先頭をキューのヘッドとして扱い、すべての操作をこれを基準に行います。dequeue関数の実装キューの先頭から要素を取り出すpop処理は、以下のように実装できます。dequeue() { // キューが空かどうかをチェック if (this.isEmpty()) { console.log(Queue Underflow!); return; } return this.container.shi
-
ユーザー入力から数値を取得し、JavaScriptでコンソールに表示する方法
document.querySelectorでユーザー入力を取得する JavaScriptでは、document.querySelector(#id名)を使用することで、ユーザーがボタンをクリックしたタイミングで入力フィールドの値を簡単に取得できます。IDセレクタで要素を指定する場合は、先頭に「#」を付けるのがポイントです。 以下は、ユーザーが入力した数値をボタンクリック時に取得し、コンソールに表示するJavaScriptコードのサンプルです。 コード例 <!DOCTYPE html> <html lang="en"> <head> &l